2013-04-03 2 views
2

Можно добавить дополнительные опции выбора в построитель запросов объектов в Symfony2.Symfony2 Добавление вариантов выбора в Query Builder

Вот мой код:

$builder->add('ship_to','entity',array(
     'class' => 'WICCommonBundle:CustomOptions', 
     'property' => 'option_value', 
     'query_builder' => function(EntityRepository $er) { 
      return $er->createQueryBuilder('co') 
       ->where('co.account=?0') 
       ->andWhere('co.option_field=?1') 
       ->orderBy('co.option_value', 'ASC') 
       ->setParameters(array(
        $this->account,"ship_to", 
       )); 
     }, 
     'empty_value' => 'Select Ship To', 
    )); 

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

"Новый" => "Add New"

Я пытался сделать это, добавив, но это не сработало:

'choices' => array(
      'New' => 'Add New' 
     ), 

Спасибо за вашу помощь!

+0

создать метод в классе, который получает данные из репозитория, добавляет ваши данные и возвращает маржированные данные. – mkjasinski

ответ

0

Два пути пойти:

1) Что mkjasinski сказал: создать фабричный метод, который сочетает в себе данные с последним вариантом, или

2) Добавить прослушиватель событий в форме строителя, который добавляет дополнительная опция перед визуализацией формы:

$builder->addEventListener(
    FormEvents::POST_SET_DATA, 
    function(FormEvent $event) use($user, $factory){ 
     $form = $event->getForm(); 

     // get your form field 
     $field = $form->get('ship_to') 

     // ... alter the field so your data is added to it 
    } 
); 
Смежные вопросы