Symfony2 Настройка выбора поля по умолчанию - PullRequest
68 голосов
/ 10 ноября 2011

Я создаю форму следующим образом:

$form = $this->createFormBuilder($breed)
             ->add('species', 'entity', array(
                  'class' => 'BFPEduBundle:Item',
                  'property' => 'name',
                  'query_builder' => function(ItemRepository $er){
                      return $er->createQueryBuilder('i')
                                ->where("i.type = 'species'")
                                ->orderBy('i.name', 'ASC');
                  }))
             ->add('breed', 'text', array('required'=>true))
             ->add('size', 'textarea', array('required' => false))
             ->getForm()

Как установить значение по умолчанию для списка видов?


Спасибо за ваш ответ, я прошу прощения, я должен перефразировать мой вопрос. Если у меня есть значение, которое я извлекаю из модели, как мне установить это значение как SELECTED = "yes" для соответствующего значения в списке выбора видов?

Итак, выходные данные выбора опции из вида TWIG выглядят так:

<option value="174" selected="yes">Dog</option>

Ответы [ 12 ]

0 голосов
/ 17 ноября 2011

Вы можете использовать «selected_choices» и «нажать» имя, которое вы хотите выбрать в верхней части списка.Тогда он будет выбран по умолчанию.

'preferred_choices' => array(1), //1 is item number

Тип объекта Entity

0 голосов
/ 10 ноября 2011

Вы можете определить правильное значение по умолчанию для модели, которую вы хотите редактировать с помощью этой формы, или вы можете указать опцию empty_data , чтобы ваш код стал:

$form = $this
    ->createFormBuilder($breed)
    ->add(
        'species',
        'entity',
        array(
            'class'         => 'BFPEduBundle:Item',
            'property'      => 'name',
            'empty_data'    => 123,
            'query_builder' => function(ItemRepository $er) {
                return $er
                    ->createQueryBuilder('i')
                    ->where("i.type = 'species'")
                    ->orderBy('i.name', 'ASC')
                ;
            }
        )
    )
    ->add('breed', 'text', array('required'=>true))
    ->add('size', 'textarea', array('required' => false))
    ->getForm()
;
...