0

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

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

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

{{ form_widget(form) }}
4

1 回答 1

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,附加了data-prototype由表单的 HTML 组成的属性。在第二种情况下,实际的 HTML(不是作为属性)附加了 ID 属性“form_name_$$name$$”,您需要将 $$name$$ 替换为适当的索引。

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

希望这个对你有帮助...

于 2012-05-13T23:10:02.883 回答