Symfony2:如何更改PRE_SUBMIT上的隐藏字段值

时间:2014-07-01 18:38:07

标签: php symfony symfony-forms symfony-2.3

这是在$formBuilder

中添加隐藏值的方式
->add('depth', 'hidden', array('mapped'=>false, 'data' => 1))

我有一个被激活的函数ON_PRE_SUBMIT,在下面的一行我假设这个字段的值会改变,但事实并非如此。

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

我也尝试按照here显示:

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

但没有任何改变。我在其他字段上尝试了上述代码,并且它们通常会更改字段值。我错过了什么吗?

2 个答案:

答案 0 :(得分:4)

在$ event:

上设置数据
$data = $event->getData();
$data['depth'] = $depth + 1;
$event->setData($data);

答案 1 :(得分:1)

我注意到的一件事是你正在使用$depth++,它将首先赋值,然后递增它,这样你最终会分配旧的值。试着改变这个:

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

您是否也可以尝试将事件更改为POST_SUBMIT,我相信如果您使用PRE_SUBMIT,则提交的数据将覆盖您在PRE_SUBMIT上修改的所有数据