我需要在每個模塊中實現事件觸發器,當發生特定事件時。我還需要所有其他模塊必須在事件觸發時做一些工作,並且要意識到這一點。ZF2共享模塊事件管理器
我正在嘗試創建一些可以發送觸發器的通用端點,以及所有模塊需要偵聽的位置,但是我在確定如何實現這一點時遇到了一些問題。
任何想法?
我需要在每個模塊中實現事件觸發器,當發生特定事件時。我還需要所有其他模塊必須在事件觸發時做一些工作,並且要意識到這一點。ZF2共享模塊事件管理器
我正在嘗試創建一些可以發送觸發器的通用端點,以及所有模塊需要偵聽的位置,但是我在確定如何實現這一點時遇到了一些問題。
任何想法?
基於對@ Andrew的回答的評論,只要您的控制器擴展了AbstractActionController
(它最有可能),它已經可以識別EventManager,所以您可以繼續並在控制器操作中觸發任何您喜歡的事件通過做...
<?php
namespace Application/Controller;
// usual use statements omitted for brevity ..
class IndexController extends AbstractActionController
{
public function indexAction()
{
// trigger MyEvent
$this->getEventManager()->trigger('MyEvent', $this);
}
}
要收聽其他模塊的引導該事件,請執行下列操作
public function onBootstrap(EventInterface $e)
{
$app = $e->getApplication();
// get the shared events manager
$sem = $app->getEventManager()->getSharedManager();
// listen to 'MyEvent' when triggered by the IndexController
$sem->attach('Application\Controller\IndexController', 'MyEvent', function($e) {
// do something...
});
}
有一個關於這幾個好文章:
http://www.mwop.net/blog/266-Using-the-ZF2-EventManager.html
http://www.eschrade.com/page/zend-framework-2-event-manager/
這很容易使你的模塊聽這是應用廣泛的一個事件,然後執行一些任務時觸發。在這兩個應該有足夠的信息讓你開始。
如果你舉一個你想要的東西的例子,我可以幫助一個你如何去做的例子。
,做到了。 :) – MGP 2013-03-06 10:52:03