2013-05-09 36 views
1

我想在zend中配置module.php的完成函數,從我所瞭解的需要配置某種形式的監聽器(在bootstrap中我認爲)將調用完成函數和然後,我可以在完成用戶請求後執行代碼。配置zend模塊使用完成

有人可以提供一些示例代碼來設置模塊在完成用戶請求後調用完成。

謝謝!

回答

6

您可以在Module.phponBootstrap方法做到這一點,如下所示:

public function onBootstrap(MvcEvent $e) 
{ 
    $em = $e->getApplication()->getEventManager(); 
    $em->attach(\Zend\Mvc\MvcEvent::EVENT_FINISH, array($this, 'doSomething')); 
} 

,然後定義一個函數,doSomethingModule.php作爲以下內容:

public function doSomething(MvcEvent $e) 
{ 
    // your code goes here 
} 

如果您附加了,您還可以爲要執行的回調函數添加一些優先級在同一個事件中有多於一個的聽衆,如下所示:

$em->attach(\Zend\Mvc\MvcEvent::EVENT_FINISH, array($this, 'doSomethingFirst'), 20); 
$em->attach(\Zend\Mvc\MvcEvent::EVENT_FINISH, array($this, 'doAnotherThingLater'), 10); 

更高優先級值最早執行。 (默認優先級爲1,允許負優先級。)

2

基本的想法是將一個聽衆附加到該事件上,因爲您正確地注意到要在Module類的onBootstrap方法中做的地方。下面應該讓你開始...

public function onBootstrap(MvcEvent $e) 
{ 
    $e->getApplication()->getEventManager()->attach(MvcEvent::EVENT_FINISH, function ($e) {   
     // do something... 
    }); 
}