Symfony2表单类型实体扩展额外选项
我的表格中有以下实体字段:Symfony2表单类型实体扩展额外选项,symfony,Symfony,我的表格中有以下实体字段: ->add('cover_recto_color', 'entity', [ 'label' => 'printers_products.cover_recto_color.label', 'multiple' => true, 'expanded' => true, 'class' => 'VeoprintVeoProductBundle:VeoColor',
->add('cover_recto_color', 'entity', [
'label' => 'printers_products.cover_recto_color.label',
'multiple' => true,
'expanded' => true,
'class' => 'VeoprintVeoProductBundle:VeoColor',
'property' => 'name',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('vc')
->innerJoin('vc.rectoProducts', 'p')
->where('p.family = :family')
->setParameter('family', $this->_family)
;
}
])
此字段检索一组数据,以使用复选框列表显示该数据。我想在此列表中添加另一个自定义选项,表示数据库中的空值,但表示应用程序的具体值
我试图编辑finishView
函数中的选项:
public function finishView(FormView $view, FormInterface $form, array $options)
{
$new_choice = new ChoiceView(null, 'value', 'label');
$view->children['cover_recto_color']->vars['choices'][] = $new_choice;
}
但它不起作用。对于buildView
函数也是如此
我该怎么办?如果您还没有找到解决方案,或者只是为其他人阅读: 确保您有:
use Symfony\Component\Form\FormView;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\ChoiceList\View\ChoiceView;
及
public function finishView(FormView $view, FormInterface $form, array $options)
{
$new_choice = new ChoiceView(array(), '0', 'Your color');
$view->children['cover_recto_color']->vars['choices'][] = $new_choice;
}
新选项视图中的“0”是新选项的值,“您的颜色”是该选项的文本
仅此而已,你不需要其他任何东西
这对我很有用。为
实体创建一个。添加新选项(即custom_choice
)并使用buildView
应用该选项。谢谢。一位同事也这样介绍我,我来查一查。