【问题标题】:Symfony 3.x - Many to many extra field form collectionSymfony 3.x - 多对多额外字段表单集合
【发布时间】:2018-12-25 10:59:54
【问题描述】:

我会尽量简短。

案例故事:

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

我需要什么:

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

我的选择:

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

代码:

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

【问题讨论】:

    标签: php symfony doctrine-orm symfony-forms


    【解决方案1】:

    如果有人会在这里,解决方案非常简单,您需要做的就是确保您使用 ManyToMany 声明房间和规格之间的链接,然后在房间表单内您可以使用 EntityType 并设置 '扩展'选项为真

    【讨论】:

    • 所以您删除了中间实体并使用ManyToMany 而不是两次OneToMany
    • @TheFrost 是的,这就是为我钉上它的原因 :)
    猜你喜欢
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    相关资源
    最近更新 更多