如何在preBind事件上向Symfony2表单添加字段?


How do I add a field to a Symfony2 form on preBind event?

我需要修改preBind上的表单(使用Symfony 2.2)。

下面是EventSubscriber中preBind函数的一个片段:

public function preBind(FormEvent $event)
{
    $form = $event->getForm();
    $form->get('locationType')->setData('default');
}

然而,当我提交表单时,这个值没有被保存。我是不是漏了一步?我是否需要在FormEvent对象本身上调用setData以传播新数据?

真正帮助我弄清楚这个问题的是看到受保护的函数customizeForm($form, $positions)在本页底部的示例中完成:

http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html

正如cheesemacfly建议的那样,我最终在控制器中更改了这些数据,而不是尝试在事件订阅者中更改。