具有Symfony2中不断变化的输入量的POST表单


POST form with changing amount of inputs in Symfony2

我想处理一个在Symfony2中输入量不断变化的POST表单。此表单用于创建测验,因此用户可以根据需要为每个问题添加任意数量的问题和答案。

它基本上可以给出这样的东西,QuizQuestionAnswer都是条令实体:

- Quiz
  - Question 1
    - Answer 1.1
    - Answer 1.2
  - Question 2
    - Answer 2.1
    - Answer 2.2
    - Answer 2.3

对于其他内容,我使用了"regular"方法来处理表单(根据实体和类型在控制器中创建一个Form对象,并使其处理Request),但这在这里显然不起作用,因为输入的数量可能会有所不同。

在Symfony2中是否有正确的方法来处理此类请求,或者我是否必须遍历每个POST变量并逐一验证它们?

这在symfony2文档中得到了很好的解释。

http://symfony.com/doc/master/cookbook/form/form_collections.html

您可以在实体之间进行映射,绑定表单,并使用一些javascript(或其他方法)使前端工作。

(http://docs.doctrine-project.org/en/latest/reference/association-mapping.html可能会派上用场)

处理此问题的最佳方法是使用表单事件动态修改表单,

然后,您可以在将表单绑定到请求的同时构建表单,使其符合用户发送的内容的结构。(我已经做了,而且效果很好)。

这一切都是关于将事件订阅服务器添加到表单类。然后,您的事件订阅者应该在适当的form event上构建表单(在您的情况下,如果您需要在绑定上执行,则为BIND_CLIENT_DATA)。

深入了解文档的这一部分。