Symfony2向查询生成器添加选择选项

时间:2013-04-03 16:16:21

标签: forms symfony 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'
        ),

感谢您的帮助!

1 个答案:

答案 0 :(得分: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
    }
);