0
之间的全球事件侦听器我有两个软件包:Symfony2的 - 如何注册捆绑
- SenderBundle
- ReceiverBundle
首先提出了一些行动,并派遣一个事件,让我们说,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在事件发送后注册。为什么?!
我可以在事件的调试工具栏中看到我的事件为“未调用的侦听器”。我想这是因为Listener是在事件发送后启动并注册的。
如何注册Listener与我的其他软件包一起工作?它在Doctrine(doctrine.event_listener)中以某种方式制作,但我无法弄清楚它是如何完成的。 :/