php – Symfony 2表单实体字段类型分组

我在Symfony2中呈现一个表单,其中data_class映射到Reservation实体,并且此表单具有类Service的实体字段类型. Reservation和Service类之间的关系是多对多的.然后,服务具有ServiceType,它是另一个类,从Service类映射为多个

我想要做的是在预订表格中显示所有服务作为复选框,按服务类型分组.到目前为止,我可以像这样显示所有服务(代码来自ReservationType类):

$builder->add('services','entity',array(
         'class' => 'MyBundle:Service','multiple' => true,'expanded'  => true
 ));

并以默认方式显示表单:

<form action="{{ path('reservations',{'step': 2}) }}" method="post" {{    form_enctype(form) }}>
   {{ form_widget(form) }}

   <input type="submit" />
</form>

结果是这样的:

□ servicetype1 option
 □ servicetype1 another option
 □ servicetype2 option
 □ servicetype2 another option

我想要达到的目标是:

servicetype1:
  □ option
  □ another option
servicetype2:
  □ option
  □ another option

我试图通过使用query_builder选项来指定服务的子集,如下所示:

$builder->add('services',array(
            'class' => 'MyBundle:Service','expanded' => true,'query_builder' => function (\My\Bundle\Entity\ServiceRepository $repository)
                {return $repository->createQueryBuilder('s')->where('s.serviceType = ?1')->setParameter(1,1);} ));
    $builder->add('services',2);} ));

这是错误的,因为:

>我必须指定ServiceType id
>将“服务”添加到构建器两次,将覆盖第一个添加(这是合乎逻辑的,但如果不更改实体则无法解决)

处理这样的表格最好的选择是什么?到目前为止只有2个ServiceType-s,但我想保持它的动态性和可重用性.

这可以通过使用 group_by option解决
$builder->add('services',array(
    'class' => 'MyBundle:Service','group_by' => 'serviceType','expanded'  => true
));

相关文章

Hessian开源的远程通讯,采用二进制 RPC的协议,基于 HTTP 传输。可以实现PHP调用Java,Python,C#等多语...
初识Mongodb的一些总结,在Mac Os X下真实搭建mongodb环境,以及分享个Mongodb管理工具,学习期间一些总结...
边看边操作,这样才能记得牢,实践是检验真理的唯一标准.光看不练假把式,光练不看傻把式,边看边练真把式....
在php中,结果输出一共有两种方式:echo和print,下面将对两种方式做一个比较。 echo与print的区别: (...
在安装好wampServer后,一直没有使用phpMyAdmin,今天用了一下,phpMyAdmin显示错误:The mbstring exte...
变量是用于存储数据的容器,与代数相似,可以给变量赋予某个确定的值(例如:$x=3)或者是赋予其它的变...