Symfony2:Doctrine订阅者抛出ContextErrorException - 必须是Doctrine \ Common \ Persistence \ Event \ PreUpdateEventArgs的实例

时间:2014-09-11 10:53:40

标签: symfony doctrine-orm doctrine

我有这样的倾听者

use Doctrine\Common\EventSubscriber;
use Doctrine\Common\Persistence\Event\LifecycleEventArgs;
use Doctrine\Common\Persistence\Event\PreUpdateEventArgs;
use Doctrine\Common\Persistence\ObjectManager;
use Doctrine\ORM\Events;

class MachineSubscriber implements EventSubscriber

和方法

/**
     * @param PreUpdateEventArgs $args
     */
    public function preUpdate(PreUpdateEventArgs $args)

和Doctrine抛出异常

  

ContextErrorException:Catchable Fatal Error:传递给的参数1   Certificate \ MachineBundle \ Event \ MachineSubscriber :: preUpdate()必须是   Doctrine \ Common \ Persistence \ Event \ PreUpdateEventArgs的一个实例,   给出了Doctrine \ ORM \ Event \ PreUpdateEventArgs的实例,

奇怪的是因为我使用了适当的课程。

1 个答案:

答案 0 :(得分:3)

您正在使用错误的命名空间/类来键入preUpdate()函数参数。正确的 hierarchy 是:

Doctrine\Common\EventArgs
|_ Doctrine\ORM\Event\LifecycleEventArgs
  |_ Doctrine\ORM\Event\PreUpdateEventArgs

使用...键入提示

use Doctrine\Common\EventArgs;

public function preUpdate(EventArgs $args)
{
    // ...

......或......

use Doctrine\ORM\Event\LifecycleEventArgs;

public function preUpdate(LifecycleEventArgs $args)
{
    // ...

......或......

use Doctrine\ORM\Event\PreUpdateEventArgs;

public function preUpdate(PreUpdateEventArgs $args)
{
    // ...

...但

use Doctrine\Common\Persistence\Event\PreUpdateEventArgs;