在Symfony2中输入量变化的POST表单

时间:2013-08-19 12:24:04

标签: php forms symfony post

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

它基本上可以提供类似的内容,QuizQuestionAnswer各自为Doctrine实体:

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

对于其他东西,我使用'常规'方法处理表单(根据实体和类型在控制器中创建Form对象,并使其处理Request),但这显然不适用于此,因为输入数量可能会有所不同。

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

2 个答案:

答案 0 :(得分:2)

这在symfony2文档中解释得非常好。

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

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

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

答案 1 :(得分:1)

处理此问题的最佳方法是dynamically modify your form using form events

然后,您可以在将表单绑定到请求时构建表单,以使其符合用户发送的结构。 (我已经做到了,它工作正常)。

这一切都是为了向表单类添加Event Subscribers。然后,您的事件订阅者应该在适当的Form Event(在您的情况下为BIND_CLIENT_DATA,如果您需要在绑定时执行此操作)构建表单。

深入了解this partthe documentation