0

我有一个向用户提交测验的表单,根据他们的答案,我可能想问他们额外的问题,我必须动态地添加到所述表单中。

到目前为止,我一直在做的是,我已经从测验的问题列表,创建了一个表单并将其发送到我在 twig 中的视图,以向用户显示原始问题,如下所示:

    <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 的新手,我觉得一定有一种我不知道或没有想过的更简单的方法。

我希望我已经让自己足够清楚,但如果需要,请毫不犹豫地要求精确。

提前致谢

4

1 回答 1

1

查看集合 Field Type

在那里,您可以找到通过 jQuery 将字段动态添加到现有表单的示例。

于 2013-06-06T14:06:09.870 回答