Symfony2 - 在预提交/提交表单事件中获取实体

时间:2017-09-26 06:44:02

标签: php forms symfony events

正如标题所说,我需要获取将在表单事件中删除的实体。我正在使用Symfony 2.7。我可以在POST_SUBMIT事件中获取实体,如果它已被创建/编辑,但我无法在PRE_SUBMITSUBMIT以及{{{{}}上获取实体1}}之前它被删除。

到目前为止我尝试了什么(我在评论中写了变量的结果)

POST_SUBMIT

这基本上是删除开始的方式。我不会把它使用的全部功能都放在一起,因为我认为不需要:

public static function getSubscribedEvents()
{
    return array(
        FormEvents::POST_SUBMIT => 'onPostSubmit',
        FormEvents::PRE_SUBMIT => 'onPreSubmit',
        FormEvents::SUBMIT => 'onSubmit'
    );
}

public function onPreSubmit(FormEvent $event)
{
    dump($event->getForm()->getData()); // <-- null
    dump($event->getData()); // <-- array:1 ["submit" => ""]
}

public function onSubmit(FormEvent $event)
{
    dump($event->getForm()->getData()); // <-- null
    dump($event->getData()); // <-- array:0 []
}

public function onPostSubmit(FormEvent $event)
{
    dump($event->getForm()->getData()); // <-- array:0 []
    dump($event->getData()); // <-- array:0 []
}

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您没有将实体传递给表单,您可以通过为createFormBuilder调用指定第一个参数来执行此操作:

$this->createFormBuilder(['entity' => $entity]);

然后你应该能够在预提交事件监听器中检索实体。