Symfony2:多对多关系的下拉选择列表的集合

时间:2014-05-22 06:51:58

标签: forms symfony doctrine-orm many-to-many

目标:

将多对多关系显示为选择输入的动态列表(单选下拉列表)

用户使用单个选择字段(multiple = false)到达页面,其中填充了持久化实体和添加/删除按钮。通过单击添加按钮,第一个下方将显示具有相同选项的新选择字段,这将在M2M关系中添加新条目。通过单击删除,该字段将消失,并且应删除该条目。

型号:

两个实体:User&经理。用户只有一个“特殊”经理和无限正常经理。 经理管理无限的用户。为了模拟这个我创建了两个关系,用户是“所有者”(不知道如何翻译)

  • ManyToOne specialManager
  • ManyToMany normalManagers

我没有创建与属性“特殊”的多对多关系,因为要求只是一个特殊的经理,我不确定Symfony / Doctrine是否会引起问题。

我有什么:

  • 根据文档,我可以使用Entity字段类型显示现有实体的多选字段。从功能上来说,这就是我需要的,在视觉上它不是。
  • 我也可以使用Collection字段类型来显示单个文本字段,并根据文档添加或删除更多JS。在视觉上这是我需要的,但文本字段(实体属性)需要由选择字段替换。

问题:

在继续挖掘之前,是否有一种简单的方法来实现这个选择标签列表?

1 个答案:

答案 0 :(得分:1)

对于最终可能需要动态选择字段列表的其他人:

我最初通过分离事件侦听器中的字段并在控制器中手动处理显示/提交来解决此问题。

然而,我对这个笨重的解决方案并不满意,当我遇到同样的需求时,我使用了第二个解决方案:创建一个中间实体xxxChoice(在本例中为ManagerChoice),它与用户相关的Mto1反向和与Manager相关的Mto1。然后通过使用“Manager”实体字段类型创建ManagerChoiceType表单,我能够轻松显示我的下拉列表选择列表。