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