Symfony2 Doctrine:Entity Listener,为什么只有preFlush工作?

时间:2015-05-07 09:22:02

标签: php symfony doctrine

抱怨我的英语不好:)

我有app / config / services.yml:

page_listener:
    class: AppBundle\Entity\PageListener
        arguments: [ "@service_container" ]
        tags:
            - { name: doctrine.orm.entity_listener }

在AppBundle \ Resources \ config \ doctrine \ Page.orm.yml:

entityListeners:
    PageListener:
        postFlush: [postFlush]
        preFlush: [preFlush]

在AppBundle \ Entity \ PageListener中:

namespace AppBundle\Entity;

use Cocur\Slugify\Slugify;
use Doctrine\ORM\Event\PreFlushEventArgs;
use Doctrine\ORM\Event\PostFlushEventArgs;

class PageListener
{
    public function __construct($container){ /* nothing here */ }

    public function preFlush(Page $page, PreFlushEventArgs $event){ ... }

    public function postFlush(Page $page, PostFlushEventArgs $event){ ... }
}

现在我做的时候

$em->persist($page);
$em->flush();

preFlush执行必须执行的操作,但postFlush不是事件开始:/即使我在postFlush中放置退出或类似内容也没有任何反应。

我会忘记什么或什么?有什么建议吗?

2 个答案:

答案 0 :(得分:1)

我对此并不完全了解,但我知道您在注册活动时需要定义活动。

  my.listener2:

    class: Acme\SearchBundle\EventListener\SearchIndexer2

    tags:
        - { name: doctrine.event_listener, event: postPersist, connection: default }

请参考此链接:

http://inchoo.net/dev-talk/symfony2-event-listeners/

答案 1 :(得分:0)

这可能取决于您的Symfony或Doctrine版本。粘贴你的composer.json