이벤트 디스패처에 내 이벤트/수신기를 등록하는 동안 문제가 발생했습니다. @ MyBundle/Resources/services.yml 번들 서비스를 통해 등록하는 것은 렌더링 프로세스 중에 만로드되므로 컨트롤러에서 디스패치를 수행 할 때는 사용할 수 없습니다. 등록 문제로 인해 이벤트 리스너가 throw되지 않았습니다.
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()));
, 디버깅하는 동안, 나는 발송 방법에 것을 볼 수 있습니다, 내가 첨부 할 리스너를 찾을 수 없습니다.
trav.webservice.error_connection 대신 kernel.request 이벤트를 넣으려고 할 때 작동합니다 (리스너가 호출되지 않고 디버그 막대에서 볼 수 있음). 그러나 WebServiceListener :: OnDataConnect의 이벤트는 GetResponseEvent입니다. DataConnectEvent가 아닙니다.
누군가 다른 아이디어가 있습니까? 나는이 점에서 영감을 받았습니다. http://iamproblematic.com/leveraging-the-symfony2-event-dispatcher/. 정확히 같은 방식으로