由于注册问题而未抛出事件侦听器

时间:2012-06-18 07:21:47

标签: symfony dispatcher

我在尝试将自己的事件/侦听器注册到事件调度程序时遇到问题。我正在通过我的bundle @ MyBundle / Resources / services.yml的服务注册的内容仅在渲染过程中加载,因此在控制器中进行调度时它不可用。

    webservice.listener.data_connect:
    class: Trav\CoreBundle\EventListener\WebService\WebServiceListener
    arguments:
        mailer: '@doctrine.orm.entity_manager'
    tags:
        - { name: kernel.event_listener, event: trav.webservice.error_connection, method: onDataConnectEvent, class: Trav\CoreBundle\EventListener\WebService\WebServiceListener }

但在defaultControler中执行此操作时:

$this->event_dispatcher = $this->container->get("event_dispatcher");
    $this->event_dispatcher->dispatch("travelyo.webservice.listener.data_connect", new DataConnectEvent(array()));

它无法正常工作,尝试调试,我可以看到在调度方法中,它无法找到我想要附加的侦听器。

当尝试放入事件kernel.request而不是trav.webservice.error_connection时,它正在工作(不调用监听器,请参阅调试栏),但WebServiceListener :: OnDataConnect中的Event i ge是GetResponseEvent和不是DataConnectEvent。

有人知道这里有什么问题吗? 我从中得到了启发:http://iamproblematic.com/leveraging-the-symfony2-event-dispatcher/

这看起来完全一样

1 个答案:

答案 0 :(得分:0)

您发送的事件需要与您正在侦听的事件相匹配。示例代码发送 travelyo.webservice.listener.data_connect 事件,并且侦听器配置为接收 trav.webservice.error_connection 事件,这意味着此侦听器不会收到活动。