Zend Framework ::忽略特定操作的predispatch

时间:2010-03-18 09:15:23

标签: php zend-framework

我是Zend框架的新手,我想知道如何在我的控制器中限制对predispatch()函数的调用以进行任何特定操作。

-DevD

1 个答案:

答案 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