我有以下設置:在控制器中,我觸發一個事件,並且我想在其他地方附加多個偵聽器。如何在多個類(和模塊)上使用ZF2的EventManager?
目前,我有以下的聽衆在我onBootstrap:
$e->getApplication()->getServiceManager()->get('EventManager')->attach('*', function($e) {
var_dump($e->getName());
});
下面的代碼爲工廠:
'Application\Controller\Foo' => function(ControllerManager $cm) {
$eventManager = $cm->getServiceLocator()->get('EventManager');
$controller = new \Application\Controller\FooController();
$controller->setEventManager($eventManager);
return $controller;
},
最後下列觸發我控制器內:
$this->getEventManager()->trigger('foo-finished', 'finishedAction', array(
'obj' => $foo->someObject()
));
所以都應該是一樣的EventManager
,我從服務定位器接收它,並將其注入到控制器。仍然沒有輸出。附加事件時,我也嘗試使用$e->getApplication()->getEventManager()
,但這隻給了我ZF內部事件。
我看了一下SharedEventManager
,但我不完全理解爲什麼我要傳遞的上下文。我嘗試這樣(這是我理解它),但仍然沒有輸出。
$e->getApplication()->getServiceManager()->get('EventManager')
->getSharedManager()
->attach('finishedAction', '*', function() { ... });
那麼,我做錯了什麼?我只是想以觸發事件,並抓住他們可能在不同的模塊,但它似乎是做出這麼複雜......
這裏看到答案爲例 - > http://stackoverflow.com/questions/15227693/zf2-shared-modules-event-manager/15243247#15243247 – Crisp 2013-05-01 14:04:58