Forms Symfony-在单个实体表单字段中组合两个属性
我有一个出版物实体,它有许多不同的字段,如书名、会议等。我想建立一个搜索表单,其中一个功能要求是在一个选择字段中组合两个搜索参数。到目前为止,我在form builder中有类似的内容:Forms Symfony-在单个实体表单字段中组合两个属性,forms,symfony,entity,symfony-2.3,Forms,Symfony,Entity,Symfony 2.3,我有一个出版物实体,它有许多不同的字段,如书名、会议等。我想建立一个搜索表单,其中一个功能要求是在一个选择字段中组合两个搜索参数。到目前为止,我在form builder中有类似的内容: $builder->add('booktitle', 'entity', array( 'required' => false, 'label' => 'Conference/Booktitle', 'pro
$builder->add('booktitle', 'entity', array(
'required' => false,
'label' => 'Conference/Booktitle',
'property' => 'booktitle',
'class' => 'indPubBundle:Publication',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('p')
->groupBy('p.booktitle')
->orderBy('p.booktitle', 'ASC');
}
));
基本上,我将所有书名显示为一个选择字段。我现在想要的是在相同的选择字段中也有会议。有没有办法做到这一点?实体字段类型是所选字段类型的子项。因此,您可以通过“选项”参数提供数据。将其与返回包含所需数据的数组的方法(例如,repository)相结合可能是一个适合您的解决方案
$builder->add('booktitle', 'entity', array(
'required' => false,
'label' => 'Conference/Booktitle',
'class' => 'indPubBundle:Publication',
'choices' => $this->getDoctrine()->getRepository('indPubBundle:Publication')->getData(),
));
研究数据转换器。我考虑过这一点,但不幸的是,我无法从AbstractType类中访问条令。我想我可以把回购协议作为一个输入参数,但我在某个地方读到,这将非常“不像Symfony”。您认为它还可以吗?是的,您可以将存储库(或管理器)添加到类型选项中(它们的存在是有原因的!)。另一种方法是对表单的其余部分使用formtype,并在控制器中向表单添加新的实体字段。例如,按钮通常就是这样做的。我刚刚发现,您可以使用
$this->doctrine
而不是使用$this->doctrine
。因此,我不必将an选项传递给类型。