11

私はこれを使用しています:

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

次のような 2 つのイベントをリッスンしようとすると、次のようになります。

- { 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。サブスクライブしたいイベントの配列を返す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)
    {

    }
}
于 2012-07-25T05:09:45.010 に答える