我想在Symfony2中处理一个输入量变化的POST表单。此表单用于创建测验,因此用户可以根据需要为每个问题添加尽可能多的问题和答案。
它基本上可以提供类似的内容,Quiz
,Question
和Answer
各自为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变量并逐个验证它们?
答案 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,如果您需要在绑定时执行此操作)构建表单。