Symfony2 добавляет варианты выбора в Query Builder

Можно ли добавить дополнительные параметры выбора в построитель запросов сущностей в Symfony2.

Вот мой код:

 $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',
    ));

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

«Новый» => «Добавить новый»

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

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

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


person LargeTuna    schedule 03.04.2013    source источник
comment
создайте метод в классе, который получает данные из репозитория, добавляет ваши данные и возвращает маргинальные данные.   -  person mkjasinski    schedule 03.04.2013


Ответы (1)


Два пути:

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
    }
);
person Rick Pastoor    schedule 26.06.2013