2015-01-20 5 views
0

У меня есть коллекция типа поля, как это:как изменить значение и метку выбора в поле типа коллекции?

$defaultData = array('attendances' => array('5', '4')); 
    $form = $this->createFormBuilder($defaultData) 
     ->add('choice', 'text') 

     ->add('email', 'email') 
     ->add('message', 'textarea') 
     ->add('attendances', 'collection', array(
      'type' => 'choice', 

      'options' => array(

       'choices' => array('1' => 'حاضر', '0' => 'غایب'), 
      ), 
     )) 
     ->add('send', 'submit') 
     ->getForm(); 

что я получаю это:

enter image description here

Посмотрите, что метки вариантов являются (0 и 1), а также их атрибут ввода имени, я хочу изменить метку и имя входа attr, так как я могу изменить $ defaultData для этого?

ответ

0

Я хотел бы предложить, что если вы собираетесь создать выбрать, использовать 'choice' тип непосредственно:

->add('attendances', 'choice', array(
        'choices' => array('1' => 'حاضر', '0' => 'غایب'),)) 

Надеется, что это помогает.

UPDATE

Вы можете использовать предопределенный массив для заполнения выбора. Вы также можете установить значение по умолчанию, используя атрибут data.

$defaultData = array('attendances' => array('5' => 'One option', '4' => 'Another option')); 

... 
->add('attendances', 'choice', array(
         'choices' => $defaultData["attendances"], 
         'data' => '5',))// just in case you want a preselected choice, in this case, key 5 will appear selected by default. 
... 
+0

Спасибо за ответ, но я скажу около 30 пунктов этого выбора типа – mohsenJsh

+0

это может быть возможно генерировать массив заранее, и передавая его в поле выбора? – acontell

+0

Вы имеете в виду $ defaultData array? yes – mohsenJsh

2

Ok вы можете сделать это с data атрибутом как массив, вы можете прочитать больше о нем here

Пример с кодом:

$defaultData = array('attendances' => 
    array('key' => '5', 'key2' => '4') 
); 
$form = $this->createFormBuilder($defaultData) 
    ->add('choice', 'text') 
    ->add('email', 'email') 
    ->add('message', 'textarea') 
    ->add('attendances', 'collection', array(
      'type' => 'choice', 

      'options' => array(

       'choices' => array('1' => 'حاضر', '0' => 'غایب'), 
      ), 
      'data' => $defaultData['attendances'] 
     )) 
    ->add('send', 'submit') 
    ->getForm(); 

результат:

name="form[attendances][key]" 
name="form[attendances][key2]" 

и этикетка также key и key2

+0

Спасибо, он работает нормально, но любая идея, что как я могу использовать разные метки и индекс для каждого элемента выбора? – mohsenJsh

Смежные вопросы