我是Zend框架的新手,我想知道如何在我的控制器中限制对predispatch()函数的调用以进行任何特定操作。
-DevD
答案 0 :(得分:4)
在您的控制器中尝试
public function preDispatch()
{
if($this->getRequest()->getActionName() === 'actionName') {
return; // ignoring preDispatch
}
// run preDispatch code when not actionName
}
在MVC请求生命周期中调用任何控制器操作之前,将调用preDispatch方法。因此,您无法从单个操作中禁用preDispatch。
您可以在控制器内创建一个属性,或者在preDispatch方法中创建一个变量,在该方法中放入您希望preDispatch无需执行任何操作即可返回的操作名称(不带Action后缀)。在上面的示例代码中,您不会针对一个操作名称进行测试,而是针对操作名称列表进行测试,可能使用in_array。
请参阅http://devzone.zend.com/article/11978-Zend-Framework-MVC-Request-Lifecycle