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

时间:2018-07-17 16:43:16

标签: php symfony doctrine-orm symfony-forms

我会尽量简短。

案例:

我有一个实体来处理“酒店客房”,一个实体来处理“房间的规格”,中间一个实体“房间有规格”。这是2xOneToMany中的多对多转换。

我需要什么:

当我为“酒店房间”构建表单时,将创建一个复选框列表,其中包含“房间规格”的完整列表。 显然,如果房间确实有它,我将需要检查任何现有的“房间规格”(中间实体表内的一行)。最初的情况是取消选中所有“房间规格”列表。

我的选项:

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

代码:

编写“表单”构建器的正确和最佳方法(如果存在)是什么?

1 个答案:

答案 0 :(得分:0)

如果任何人都可以在这里着陆,那么解决方案非常简单,您需要做的就是确保您使用ManyToMany声明了房间和规格之间的链接,然后在房间表单中可以使用EntityType并只需设置“扩展”选项为TRUE