动态添加元素到Symfony2.1中的表单仍然有效?

时间:2013-06-06 14:03:02

标签: php symfony symfony-2.1

我有一个向用户提交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的新手,我觉得必须有一个我不知道或没有想过的更简单的方法。

我希望自己足够清楚,但如果需要,请不要犹豫。

提前致谢

1 个答案:

答案 0 :(得分:1)

查看collection Field Type

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