【问题标题】:Generate subform in ajax call在ajax调用中生成子表单
【发布时间】:2012-05-13 21:26:26
【问题描述】:

我有一个包含子表单集合的表单-具有不同学习的学生-关系 manyToOne。我有正确的数据库架构和实体,表单构建器运行良好。我不知道如何附加新的“研究”对象。在任何一种情况下,我都需要从某个地方获取 html 标签 - 当至少有一个“研究:对象(克隆他)或没有这样的对象时。

假设研究对象有 2 个字段:名称和年份。如果学生有这样的记录(对象),则生成形式的第一个输入具有名称“student[study][0][name]”。并且被包围。当我单击“添加新研究”按钮时,我想复制这个周围的 div 并分别更改 html 表单元素的 id 和 name。是否有现成的库或方法可以使用?

但是有可能到目前为止还没有学习记录。所以我需要通过ajax调用从服务器获取表单。不幸的是,返回的表单具有名称如“study [name]”的输入。是否可以使这种形式类似于第一种情况 - 我的意思是“学生 [学习] [0] [姓名]”。但我想避免手动为表单生成树枝模板 - 我更喜欢

{{ form_widget(form) }}

【问题讨论】:

    标签: forms symfony symfony-forms


    【解决方案1】:

    您应该处理 data-prototype 而不是发出单独的 AJAX 请求。此处描述了添加/删除子表单项的整个概念:

    http://symfony.com/doc/current/reference/forms/types/collection.html#adding-and-removing-items

    显然,您需要一些 JS(强烈推荐jQuery)才能复制子表单字段。

    但是,您应该注意,当您最初拥有空或非空集合时,data-prototype 的行为会有所不同。至少我遇到过这种奇怪的行为。据我记得,首先当你说{{ form_rest(form) }} 时,额外的DIV 附加了由表单HTML 组成的data-prototype 属性。在第二种情况下,实际的 HTML(不是作为属性)附加了 ID 属性“form_name_$$name$$”,您需要将 $$name$$ 替换为适当的索引。

    现在,你真的应该看看 - 也许所有这些都在最近的版本中得到了修复,但我不能确定......

    希望这会有所帮助...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      • 2018-05-30
      相关资源
      最近更新 更多