Php Symfony2:如何更改预提交时的隐藏字段值

Php Symfony2:如何更改预提交时的隐藏字段值,php,symfony,symfony-forms,symfony-2.3,Php,Symfony,Symfony Forms,Symfony 2.3,这就是在$formBuilder中添加隐藏值的方式: ->add('depth', 'hidden', array('mapped'=>false, 'data' => 1)) 我有一个函数是在提交前激发的,在下面的一行我假设这个字段的值会改变,但事实并非如此 $form->get('depth')->setData($depth++); //$depth = $form->get('depth')->getData(); 我还尝试了如下所示: 但一

这就是在
$formBuilder
中添加隐藏值的方式:

->add('depth', 'hidden', array('mapped'=>false, 'data' => 1))
我有一个函数是在提交前激发的,在下面的一行我假设这个字段的值会改变,但事实并非如此

$form->get('depth')->setData($depth++); //$depth = $form->get('depth')->getData();
我还尝试了如下所示:


但一切都没有改变。我在其他字段上尝试了上述代码,它们会正常更改字段值。我遗漏了什么吗?

我注意到的一件事是,您使用的是
$depth++
,它将首先分配值,然后增加值,这样您将最终分配旧值。尝试更改此选项:

$form->get('depth')->setData(++$depth);

您是否可以尝试将事件更改为
POST\u SUBMIT
,我相信如果您使用
PRE\u SUBMIT
,提交的数据将覆盖您在
PRE\u SUBMIT
上修改的任何数据设置$Event上的数据:

$data=$event->getData();
$data['depth']=$depth+1;
$event->setData($data);

请解释这解决问题的原因。尽管我对增量前和增量后的理论非常怀疑,但我尝试了这一点,可以确认“深度”值仍然相同。我更新了答案,检查我的其他建议是否解决了您的问题您无法更改提交表单的数据。500内部服务器错误-AlreadySubmittedException您的最佳选择是使用此处介绍的数据转换器
$form->get('depth')->setData(++$depth);