Symfony Form无法获得应有的值

时间:2019-02-03 15:25:48

标签: jquery symfony symfony-forms

我正在尝试构建一个表单以发布新的“调查”,每个调查由“标题”和一组“选项”组成,选项是单独的实体,并通过“ ManyToOne”关联学说链接到“调查”实体

我正在使用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>

在每个字段中写入内容并提交后,Options集合为空。

然后我的问题是,为什么在提交表单时表单找不到“选项”?是由于某种原因而看不到输入,还是因为某些属性错误?是因为我的javascript代码做的蠢事吗?

以防万一,这里还有一些其他相关代码: 用于动态添加字段的JQuery脚本:https://pastebin.com/KCdVK60q

SurveyOption表单类型:https://pastebin.com/uGe4rqCF

“调查”表单类型:https://pastebin.com/Zs4BEEKY

以及负责表单处理的控制器功能:https://pastebin.com/zrz0uJei

1 个答案:

答案 0 :(得分:0)

我使用的是标签而不是标签;我的SurveyOptionType使用的是TextareaType(疏忽大意,可能是复制了错误的内容)。

最重要的是,{{ form_start(form) }} Twig标签被放置在元素内部,而{{ form_end(form) }}被放置在另一个元素内部。这意味着Options的输入甚至不在表单内。

解决这些问题后,一切都会按预期进行。