我嘗試向事件分派器註冊自己的事件/監聽器時遇到問題。我通過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中的事件是GetResponseEvent而不是DataConnectEvent。
有人有什麼想法這裏有什麼錯嗎? 我從這裏得到了啓發:http://iamproblematic.com/leveraging-the-symfony2-event-dispatcher/。
這似乎工作完全一樣的方式