如何在 services.yml 文件中添加多个事件作为 Doctrine symfony 中的事件侦听器


How can I add multiple events in services.yml file as event Listeners in Doctrine symfony

我正在使用这个:

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)
    {
    }
}