Symfony 3.x - 多对多额外字段表单集合

Symfony 3.x - Many to many extra field form collection

我会尽量简短。

案例:

我有一个实体要处理比方说 "Hotel Rooms",一个实体要处理 "Room's spec" 和一个中间实体 "Room has spec"。这是 2xOneToMany 中的多对多转换。

我需要什么:

当我为 "Hotel room" 构建表单时,会构建一个包含 "Room's specs" 完整列表的复选框列表。 显然我需要检查任何现有的 "room spec" 房间是否真的有它(中间实体 table 内的一行)。最初的情况是取消选中所有 "Room's spec" 列表。

我的选择:

  1. 删除中间实体,因为它实际上只是一个 true/false 行,但是我需要让 symfony 明白如果 M-M 关系中不存在任何行,那么房间就没有那个规格,另一方面,如果该行存在,则房间具有规格。我真正担心的是,在不久的将来,我的客户将需要一些数字,例如房间有多少镜子
  2. 使用 allow_add 选项使所有这些东西成为标准的 Symfony 表单集合,使所有行都由用户手动创建。不是有史以来最好的用户体验,但它可能是一个解决方案
  3. 在控制器内部手动处理列表创建、编辑、删除,繁琐工作

代码:

编写表单生成器的正确和最佳方法(如果存在)是什么?

如果有人想在这里着陆,那么解决方案非常简单,您需要做的就是确保在房间和规格之间声明 link 使用 ManyToMany,然后在房间表单中您可以使用EntityType 并将 'expanded' 选项设置为 TRUE