【问题标题】:Symfony2 forms: add delete icon near each elementSymfony2 表单:在每个元素附近添加删除图标
【发布时间】:2012-11-23 12:53:15
【问题描述】:

我想在我的表单中显示来自实体的元素列表。在每个元素附近,它应该是一个删除按钮,它将从实体中删除特定元素。

你知道我该怎么做吗?

示例:3 个实体:Person、Affiliation 和 PersonAffiliations。一个人有 0 个或多个从属关系。假设我为该人创建了 10 个从属关系,现在我想删除其中一个。如何创建表单以显示特定人员的所有从属关系列表,并在每个从属关系附近显示一个小的删除图标。单击此图标时,应删除此人的从属关系。

【问题讨论】:

    标签: php symfony doctrine-orm symfony-forms


    【解决方案1】:

    您必须嵌入 collection of forms 并使用大量 Javascript。它在 Symfony2 Cookbook 中!

    按照上面链接中提供的标签的示例进行操作!很简单,您必须为每个要删除的子表单放置一个带有“remove”或“x”字符串的锚点,并使用 Javascript 处理删除。

    表单插入是通过使用您需要添加的子表单的Prototype完成的,但您似乎不需要插入。

    请注意,在您的示例中,您必须创建一个空的 Person 对象并向其中添加预定义的 Affiliation 对象列表,以便 FormBuilder 能够呈现与 @ 相关的表单987654328@。然后您可以使用 Javascript 删除子表单。 当然,通常最好定义专用的表单类型。


    如果您只需要取消选择与主实体相关的实体列表,则可以使用entity field type 并且可以将其呈现为带有扩展选项的复选框列表。您的控制器将绑定实体和相关关系,因此 Symfony 将取消之前的关系。

    【讨论】:

    • 谢谢你,为你+1。 “但是”,在我的实体人中,我与实体从属关系 (OneToMany) 有联系,因此我可以找到该人的所有从属关系。那么为什么要使用表单集合呢?
    • 是的,我明白了!如果要删除从属关系,则需要 Javascript。如果您只想选择它们,您可以将选择呈现为复选框列表!
    • 要呈现从属关系列表,请使用实体字段并将其呈现为展开多选。查看更多 [这里]。(symfony.com/doc/2.0/reference/forms/types/entity.html)
    • 你确定不能用 symfony 删除它们吗,“收集字段类型”和 allow_delete 选项是怎么回事?见:symfony.com/doc/2.0/reference/forms/types/…
    • 如果您阅读我建议的食谱,您会注意到您必须使用收集表单字段类型!
    猜你喜欢
    • 1970-01-01
    • 2014-06-27
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 2010-12-11
    • 2016-09-13
    • 2017-01-16
    • 1970-01-01
    相关资源
    最近更新 更多