【问题标题】:How do I add a field to a Symfony2 form on preBind event?如何在 preBind 事件上向 Symfony2 表单添加字段?
【发布时间】:2013-06-18 20:53:02
【问题描述】:

我需要在 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

【问题讨论】:

  • 不确定您是否以正确的方式做自己想做的事。你想做什么?
  • 我有一个名为 Opportunity(志愿者机会)的 Doctrine 实体。它有一个名为 locationType 的字段,不能为空。此字段的值是根据在已保存位置的下拉列表中选择的选项设置的。机会的 locationType 可以是“默认”,相当于非营利组织的地址,“虚拟”表示远程志愿者机会,或“其他”表示新地址。此外,之前输入的地址会显示在下拉列表中。如果选择其中之一,则 locationType 设置为“其他”。
  • 所以根据一个选择字段,您有一个文本字段设置为预定义的值?
  • 我想动态改变一个表单的内容,在表单提交之后,绑定模型格式之前,这样在绑定的时候会添加一些新的数据。跨度>
  • 我认为你的方法不对。您在此处显示的示例用于修改表单(FormType)而不是里面的数据。为什么不从控制器内部更改数据?

标签: php forms events symfony


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2015-07-15
    • 2012-08-13
    • 2015-03-20
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    相关资源
    最近更新 更多