如何在Symfony中手动调度Doctrine/Kernel事件?

Rem*_*i M 4 php orm doctrine symfony doctrine-orm

我需要preRemove手动调度一个事件,因为我正在软删除一个实体,因此并没有真正删除它.但是我想在实际删除实体时触发相同的侦听器.

我可以使用EventDispatcher(不期望a LifecycleEventArgs)喜欢自定义事件吗?派遣香草事件的最佳方式是什么?

编辑:

感谢bosam回答,这是手动调度vanilla事件的方法:

use Doctrine\ORM\Event\LifecycleEventArgs;
use Doctrine\ORM\Events;

$em = $this->getDoctrine()->getManager();
$eventManager = $em->getEventManager();
$eventManager->dispatchEvent(Events::preRemove, new LifecycleEventArgs($user, $em));
Run Code Online (Sandbox Code Playgroud)

bos*_*sam 5

您需要从实体管理器实例调用getEventManager().

例如,对于Doctrine:

$em = $this->getDoctrine()->getManager();
$eventManager = $em->getEventManager();
Run Code Online (Sandbox Code Playgroud)

然后你可以使用发送一个事件$eventManager->dispatchEvent($eventName, EventArgs $eventArgs = null).