Forms 在ajax调用中生成子窗体

Forms 在ajax调用中生成子窗体,forms,symfony,symfony-forms,Forms,Symfony,Symfony Forms,我有一个表格,里面有很多子表格——学习不同的学生——关系。我有相应的数据库模式和实体,FormBuilder运行良好。我不知道如何添加新的“研究”对象。在这两种情况下,我都需要从某个地方获取html标记——至少有一个“研究:对象”(克隆他),或者没有这样一个 假设学习对象有两个字段:名称和年份。如果学生有这样的记录(对象),则生成表单中的第一个输入的名称为“student[study][0][name]”。并被包围。当我单击“Add new study”(添加新学习)时“按钮我想复制这个周围的d

我有一个表格,里面有很多子表格——学习不同的学生——关系。我有相应的数据库模式和实体,FormBuilder运行良好。我不知道如何添加新的“研究”对象。在这两种情况下,我都需要从某个地方获取html标记——至少有一个“研究:对象”(克隆他),或者没有这样一个

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

但目前还没有研究记录。所以我需要通过ajax调用从服务器获取表单。不幸的是,返回的表单中的输入名为“study[name]”。是否可以将此表格呈现为与第一个案例类似的形式?我的意思是“学生[学习][0][姓名]”。但我希望避免为表单手动生成细枝模板-我更喜欢

{{ form_widget(form) }}

您应该处理
数据原型
,而不是发出单独的AJAX请求。下面介绍了添加/删除子表单项的整个概念:

显然,为了复制子表单字段,您需要使用一些JS(
jQuery

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

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

希望这有点帮助