我试图建立一个表来发表新的“调查”,每个由“标题”和一组“选项”,选择是独立的实体,并通过理论多对一关联链接到调查的实体。
我使用的是CollectionType允许动态创建表单字段。我然后使用jQuery动态创建这些其他形式。
问题是,一旦我尝试提交表单,它提交只有“调查”的对象,而不是“选项”对象。我知道这是因为在查询后两者的“调查”保存到数据库中,而这些选项都没有。
问题是,当我呈现形式准系统地,没有任何额外的,和我的jQuery代码只是附加了“数据原型”,没有任何改变,它工作正常。调查和选项保存。我知道这是因为我测试过它。
它的工作之后,我决定把形式稍微像样的,我一定是拧东西了。
这里是我的形式呈现的HTML:https://pastebin.com/5UuTXy1F
下面是相关的HTML,这是一个域的外观与它已经被JQuery的创建之后等。
<div class="survey_option">
<label>1: </label>
<input type="text" id="survey_options_0_title" name="survey[options][0][title]" required="required" maxlength="500">
<button type="button" class="remove_option_link">x</button>
</div>
在每个字段写一些东西,在提交后,选项集合为空。
我的问题是的话,为什么不能形式找到“选项”表单提交过程中?是不是因为它出于某种原因无法看到的输入,或者是因为一些它的属性是错误的?难道是因为我的javascript代码是做一些愚蠢的事?
以防万一,这里是一些其他相关的代码:这是用来动态地添加字段的jQuery脚本:https://pastebin.com/KCdVK60q
所述SurveyOption形式类型:https://pastebin.com/uGe4rqCF
调查表格类型:https://pastebin.com/Zs4BEEKY
而负责该表单处理的控制器功能:https://pastebin.com/zrz0uJei
我使用的标签,而不是一个标签;我SurveyOptionType是使用TextareaType(一个疏忽,很可能抄错的事)。
最重要的是,该{{ form_start(form) }}
嫩枝标签被放置在元件的内部,并且{{ form_end(form) }}
是一个不同的元件的内侧。这意味着对于Options
的投入甚至没有在表单内。
解决这些问题之后,一切都按预期工作。