从Symfony2控制器中删除Doctrine生命周期事件

Mik*_*ike 6 model-view-controller events doctrine symfony doctrine-orm

我想从控制器中删除Doctrine Extensions生命周期事件监听器.

我需要删除更新事件的侦听器,因为我需要立即更新树中的所有节点.图书馆不支持的东西,但可以通过直接设置正确的左,右,水平等来实现......

是否可以从控制器内删除生命周期?对于这种情况,有什么可能的解决方案.

我觉得这样的事情可能有用,但事实并非如此

$evm = $em->getEventManager();

$listener = new \Gedmo\Tree\TreeListener();
$evm->removeEventListener( array( 'postUpdate' ), $listener );
Run Code Online (Sandbox Code Playgroud)

Ged*_*nas 14

是的它会工作,但有不同的事件使用:

$listenerInst = null;
$em; /* entity manager */
foreach ($em->getEventManager()->getListeners() as $event => $listeners) {
    foreach ($listeners as $hash => $listener) {
        if ($listener instanceof WantedListenerClass) {
            $listenerInst = $listener;
            break 2;
        }
    }
}
$listenerInst || die('Listener is not registered in the event manager');
// then you can remove events you like:
$evm = $em->getEventManager();
$evm->removeEventListener(array('onFlush'), $listenerInst);
Run Code Online (Sandbox Code Playgroud)