我有两个捆绑包:
首先做一些动作并发送一个事件,比方说,something.done
。现在我想接收此事件并在ReceiverBundle中处理它,它包含分配给它的侦听器和正确的操作。我当然不想在SenderBundle中$eventDispatcher->addListener()
!但是我想自动为已定义的事件注册监听器!
我想通过以下方式在ReceiverBundle中创建services.xml
:
<services>
<service id="some_listener" class="My\ReceiverBundle\Class">
<tag name="kernel.event_handler" event="something.done" method="onSomethingDone" />
</service>
</services>
使用DependencyInjection自动加载。
我发现它有点像工作......但没有。我管理的内容 - 在发送事件后注册了Listener。为什么呢?!
我可以在Events中的调试工具栏中看到我的事件为“未调用侦听器”。我想这是因为在发送事件后启动并注册了Listener。
如何注册使用我的其他Bundle的Listener?它是以Doctrine(doctrine.event_listener)的某种方式制作的,但我无法弄清楚它是如何完成的。 :/
答案 0 :(得分:0)
您想要使用kernel.event_listener
标记:
<services>
<service id="some_listener" class="My\ReceiverBundle\Class">
<tag name="kernel.event_listener" event="something.done" method="onSomethingDone" />
</service>
</services>