Symfony2有forms dynamic generation的可能性。
然而,基于用户提交的数据动态生成嵌入表单存在很大问题:
如果我使用FormEvents :: PRE_SET_DATA,那么我无法接收嵌入表单的帖子数据 - 只有父对象数据可用
$builder->get('contacts')->addEventListener(
FormEvents::POST_SET_DATA
function(FormEvent $event) {
$data = $event->getData(); //$data will contain embedded form object - not the data object!
}
);
如果我使用FormEvents :: POST_SUBMIT,那么我可能会收到数据,但我无法修改表单
$builder->get('contacts')->addEventListener(
FormEvents::POST_SUBMIT,
function(FormEvent $event) {
$data = $event->getData(); //$data will contain filled data object - everything is ok
$form = $event->getForm(); //form will be ok
if ($data->getSomeValue()) {
$form->add(...); //Error: "You cannot add children to a submitted form"
}
}
);
请帮忙:有没有办法根据用户提交的数据动态生成嵌入表单?
我使用Symfony 2.4。
非常感谢你!
答案 0 :(得分:10)
问题很容易解决:需要使用FormEvents :: SUBMIT或FormEvents :: PRE_SUBMIT事件。
对于他们两者,可以获取提交数据并更改表格。
他们之间的区别:
还有更好的可能性:
您可以使用FormEvents :: POST_SUBMIT但是您需要将它附加到子表单字段 - 而不是整个子表单。
在这种情况下,您将能够: