我正在使用这个:
my.listener:
class: Acme'SearchBundle'Listener'SearchIndexer
tags:
- { name: doctrine.event_listener, event: postPersist }
现在,如果我尝试收听两个这样的事件:
- { name: doctrine.event_listener, event: postPersist, preUpdate }
它给出一个错误。
我认为你可以这样做:
my.listener:
class: Acme'SearchBundle'Listener'SearchIndexer
tags:
- { name: doctrine.event_listener, event: postPersist }
- { name: doctrine.event_listener, event: preUpdate }
您需要事件订阅者而不是事件侦听器。
您需要将服务标记更改为 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)
{
}
}