在Symfony2中将Doctrine2实体侦听器注册为服务

时间:2013-10-23 22:14:31

标签: symfony doctrine-orm

对于上下文,我使用Symfony 2.4&学说2.4。

我目前正试图在教义实体监听器中移动一些逻辑。现在,我刚刚使用了@EntityListeners注释,以便在我的实体上注册我的侦听器,因为它不需要外部依赖项。但是现在,我想通过Symfony2容器将服务注入我的实体监听器。由于这个功能很新,所以没有相关的文档解释它是否是第一个可能的&第二,如何做到。

谢谢!

2 个答案:

答案 0 :(得分:3)

这可以在Doctrine 2.4中使用,但需要您创建自己的Entity Listener Resolver类。

有关注册自定义解析程序的详细信息,请参阅Doctrine docs,该解析程序将容器(或我的ServiceManager)作为构造函数参数。

我没有尝试使用Symfony2容器,但我使用的是Zend Framework 2 ServiceManager module,原则可能非常相似。

ZF2的DoctrineORMModule使用ServiceManager调用MyEntityListenerResolverFactory,使整个过程变得非常优雅,而MyEntityListeolverFactory又将ServiceManager注入MyEntityListenerResolver。

答案 1 :(得分:2)

请参阅Symfony docs on Entity Listeners以了解如何将实体监听器注册为服务:

services:
    user_listener:
        class: \UserListener
        tags:
            - { name: doctrine.orm.entity_listener }
            - { name: doctrine.orm.entity_listener, entity_manager: custom }
相关问题