Ran*_*ngh 11 php doctrine symfony
我用这个:
my.listener:
class: Acme\SearchBundle\Listener\SearchIndexer
tags:
- { name: doctrine.event_listener, event: postPersist }
Run Code Online (Sandbox Code Playgroud)
现在,如果我尝试听这样的两个事件:
- { name: doctrine.event_listener, event: postPersist, preUpdate }
Run Code Online (Sandbox Code Playgroud)
它给出了一个错误.
mas*_*sk8 23
我想你可以这样做:
my.listener:
class: Acme\SearchBundle\Listener\SearchIndexer
tags:
- { name: doctrine.event_listener, event: postPersist }
- { name: doctrine.event_listener, event: preUpdate }
Run Code Online (Sandbox Code Playgroud)
您需要一个事件订阅者而不是事件侦听器.
您将服务标记更改为doctrine.event_subscriber,您的类应该实现Doctrine\Common\EventSubscriber.您需要定义一个getSubscribedEventsto satisf EventSubscriber,它返回您想要订阅的事件数组.
前
<?php
namespace Company\YourBundle\Listener;
use Doctrine\Common\EventArgs;
use Doctrine\Common\EventSubscriber;
class YourListener implements EventSubscriber
{
public function getSubscribedEvents()
{
return array('prePersist', 'onFlush');
}
public function prePersist(EventArgs $args)
{
}
public function onFlush(EventArgs $args)
{
}
}
Run Code Online (Sandbox Code Playgroud)