Symfony2有发生形式动态生成的可能性。
然而,基于用户提交的数据动态生成嵌入式表单存在很大的问题:
如果我使用FormEvents::PRE_SET_DATA,那么我就无法接收仅用于嵌入式窗体的父对象数据的post数据。
$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。
非常感谢您提前!
发布于 2014-02-11 16:10:11
这个问题很容易解决:需要使用FormEvents::SUBMIT或FormEvents::PRE_SUBMIT事件。
对于他们两人来说,都有可能获得提交的数据并更改表单。
他们之间的差异:
还有更好的可能性:
您可以使用FormEvents::POST_SUBMIT,但是您需要将它附加到子表单字段,而不是整个子表单。
在这种情况下,您将能够:
https://stackoverflow.com/questions/21705914
复制相似问题