我正在使用它:
my.listener:
class: Acme\SearchBundle\Listener\SearchIndexer
tags:
- { name: doctrine.event_listener, event: postPersist }
现在,如果我试着听这样的两个事件:
- { name: doctrine.event_listener, event: postPersist, preUpdate }
它会出错。
答案 0 :(得分:23)
我认为你可以这样做:
my.listener:
class: Acme\SearchBundle\Listener\SearchIndexer
tags:
- { name: doctrine.event_listener, event: postPersist }
- { name: doctrine.event_listener, event: preUpdate }
答案 1 :(得分:7)
您需要一个事件订阅者而不是事件监听器。
您将服务代码更改为doctrine.event_subscriber
,您的班级应该实施Doctrine\Common\EventSubscriber
。您需要定义getSubscribedEvents
以满足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)
{
}
}