forms - 用于多对多关系的 Symfony2 表单小部件

标签 forms symfony many-to-many

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

在 Symfony2 中有什么简单的方法可以做到这一点吗?或者也许是其他一些用户友好的方式来编辑多对多关系?

documentation多对多关系只有四个小部件,当有大量关系可能性需要编辑时,它们都不是很好。

最佳答案

您可以使用 entity form field 轻松管理多对多关系.例如如果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);
}

对于更复杂的场景,请查看 collection form type ,但你必须处理 jQuery/Javascript。

关于forms - 用于多对多关系的 Symfony2 表单小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10581177/

相关文章:

mysql - 从多对多结果中删除一些数据

sql - 有趣的多对多 sql 连接

javascript - 使用 javascript 调用按键

javascript - 用户名格式 : Comparing the input data in an array

php - 找不到命名空间类? symfony2

c# - Entity Framework 多对多关系包括极慢

java - 在服务器(servlet)端检测下拉列表的值时出现问题

java - 为什么我在 JSP 中得到空值?

php - 如何创建链接以下载 symfony2 中生成的文件?

jquery - ajax请求symfony 3后net::ERR_CONNECTION_RESET