11

我正在使用这个:

my.listener:
        class: Acme\SearchBundle\Listener\SearchIndexer
        tags:
            - { name: doctrine.event_listener, event: postPersist }

现在,如果我尝试监听两个这样的事件:

- { name: doctrine.event_listener, event: postPersist, preUpdate }

它给出了一个错误。

4

2 回答 2

24

我认为你可以这样做:

my.listener:
        class: Acme\SearchBundle\Listener\SearchIndexer
        tags:
            - { name: doctrine.event_listener, event: postPersist }
            - { name: doctrine.event_listener, event: preUpdate }
于 2012-07-25T05:11:00.413 回答
7

您需要事件订阅者而不是事件侦听器。

您将服务标签更改为doctrine.event_subscriber,并且您的类应该实现Doctrine\Common\EventSubscriber. 您需要定义 agetSubscribedEvents以满足EventSubscriberwhich 返回您要订阅的事件数组。

前任

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

    }
}
于 2012-07-25T05:09:45.010 回答