php – Symfony中的Doctrine 2:侦听来自特定实体的事件

我有一个Doctrine Entity(新闻),我在听prePersist这个事件.为此,我使用方法prePersist的事件监听器.

我的services.yml看起来像这样:

listener.entity.news:
    class: A\BBundle\Listeners\Entity\NewsListener
    tags:
        - { name: doctrine.event_listener, event: prePersist }

这很好,一切正常.但文档指出,当调用persist()时,会产生prePersist事件.然后,当我的配置声明NewsListener将捕获它并执行一些代码.在我捕获事件的方法中,我应该检查事件是否来自新闻实体.这是我想知道的地方,是否可以告诉Symfony为特定实体监听prePersist事件然后将其传递给我的听众?

目前(据我所知),每当doctrine产生prePersist事件时,都会通知ALL侦听器.是不是更好地说哪些听众应该听哪个事件产生者,即使这应该是可选的,而不是通知所有人并让他们过滤他们需要的?

我希望我正确地问我的问题.

最佳答案

is it possible to tell Symfony to listen for prePersist events for a
particular Entity and then pass it to my listener?

不,这是不可能的.您的监听器将为持久存在的每个实体触发.您可以在事件侦听器中执行instanceof检查,以确保您的代码仅针对特定实体运行.

转载注明原文:php – Symfony中的Doctrine 2:侦听来自特定实体的事件 - 代码日志