2016-12-20 5 views
1

Имея Место как:Symfony изменение ChoiceType имени множественный вход расширен

id name  title 
--- -----  ------ 
1  usa   United States of America 
2  uk   United Kingdom 
3  canada  Canada 

У меня есть ** ** EntityType поле формы, названный место:

class OrderType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('location', EntityType::class, array(
      'class'  => Location::class, 
      'choice_label' => 'title', 
      'choice_name' => 'name', 
      'choice_value' => 'id', 
      'multiple'  => true, 
      'expanded'  => true, 
      'data'   => array(
       'usa', 'canada' 
      ), 
     )); 
    } 
} 

и я хочу например, некоторые флажки (EntityType, multiple=true, expanded=true) проверены (с использованием опции data).

Я установил choice_name вариант имени местоположения, но атрибут поля формы name не изменяется.

HTML

<input type="checkbox" id="order_location_usa" name="order[location][]" value="1"> 
<input type="checkbox" id="order_location_uk" name="order[location][]" value="2"> 
<input type="checkbox" id="order_location_canada" name="order[location][]" value="3"> 

Что мне не хватает?

+0

В чем вопрос? установить значения по умолчанию или изменить имя входа? – yceruto

+0

установка значений по умолчанию (проверка флажков), что, я думаю, может быть сделано с использованием параметра данных. Для параметра данных нужен массив избранных имен, я думаю, не уверен – Trix

+0

Чтобы показать данные по умолчанию, я предлагаю вам использовать объект привязки к форме вместо опции '' data'' (это может переопределить ее). Однако это должно работать с массивом экземпляров «Местоположение» вместо массива строки. – yceruto

ответ

0

Если вы можете передать в сущности, вы можете сделать это:

'choice_name' => function($location){ 
    return $location->getName(); 
} 

В противном случае, «имя» не определено, и именно поэтому она пуста. Документация находится здесь: https://symfony.com/doc/current/reference/forms/types/entity.html#choice-name

Таким образом, choice_name является вызываемым (функция).