7

在 Symfony 1 中有一个名为 admin_double_list 的表单小部件。它生成了两个名为 Unassociated 和 Associated 的选择字段。它还生成了将项目从一个列表添加到另一个列表的按钮。

在 Symfony2 中是否有任何简单的方法可以实现这一点?或者也许是其他一些用户友好的方式来编辑多对多关系?

文档中,只有四个用于多对多关系的小部件,当有大量关系需要编辑时,它们都不是很好。

4

1 回答 1

14

您可以使用实体表单字段轻松管理多对多关系。例如,如果User作为与 的多对多关系Group,您可以简单地添加到构建器:

$builder->add('groups', 'entity', array(
    'multiple' => true,   // Multiple selection allowed
    'expanded' => true,   // Render as checkboxes
    'property' => 'name', // Assuming that the entity has a "name" property
    'class'    => 'Acme\HelloBundle\Entity\Group',
);

这将生成一个复选框列表,其中关联的实体被标记(选中),而未关联的实体则没有。设置expandedfalse您可以将其呈现为选择元素(多个)。

如果您需要自定义检索组的方式,您还可以传递一个query_builder选项,QueryBuilder实例或闭$erEntityRepository

'query_builder' => function(\Doctrine\ORM\EntityRepository $er) {
    $qb = $er->createQueryBuilder('g');

    return $qb->orderBy('g.name', 'DESC);
}

对于更复杂的场景,还请查看集合表单类型,但您必须处理 jQuery/Javascript。

于 2012-05-14T14:09:24.063 回答