我有一个向用户提交quizz的表单,根据他们的回答,我可能想问一些我必须动态添加到表单中的其他问题。
到目前为止,我一直在做的是,我已经删除了需要由用户答案触发的问题(由'triggerQuestionId'属性标识,该属性包含需要回答的问题的ID才能显示)在quizz的问题列表中,创建了一个表单并将其发送到我的视图中,以便向用户显示原始问题,如下所示:
<table>
<tbody id="table_body">
{% for answer in form.answers %}
<tr id={{ answer.vars.value.question.id }}>
<td><span class="question">{{ answer.vars.value.question.title }}</span></td>
<td class="answer">
{{ form_widget(answer.choice) }}
</td>
</tr>
{% endfor %}
</tbody>
</table>
{{ form_rest(form) }}
我使用Ajax请求来检查当用户选择问题的答案时是否应该显示任何问题,如果是,我为触发的问题创建一个类似于上述的新tr元素并将其添加到表中。
但是,在发布表单后,我(逻辑上)会收到以下错误:“错误:此表单不应包含额外的字段。”
所以我想我最初会加载每个问题,只在视图中显示'triggerQuestionId'设置为null。
但这也不起作用,因为如果我保留{{form_rest(form)}},则会显示触发的问题,如果我不这样做,则会收到错误消息,说明CSRF令牌无效。
我仍然是Symfony的新手,我觉得必须有一个我不知道或没有想过的更简单的方法。
我希望自己足够清楚,但如果需要,请不要犹豫。
提前致谢