2013-05-09 35 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... 
    }); 
}