Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php setDispatched()澄清_Php_Zend Framework - Fatal编程技术网

Php setDispatched()澄清

Php setDispatched()澄清,php,zend-framework,Php,Zend Framework,问题是关于Zend Framework的路由器setDispatched()方法 我在同一个控制器(indexController)中有一个fooAction()和一个loginAction() 我还有一个ActionHelper,我正在使用它的preDispatch()方法。在这个函数的末尾,我有一个if语句,其中我检查ACL: public function preDispatch() { // some code... if (!$this->_acl->i

问题是关于Zend Framework的路由器setDispatched()方法

我在同一个控制器(indexController)中有一个
fooAction()
和一个
loginAction()

我还有一个
ActionHelper
,我正在使用它的
preDispatch()
方法。在这个函数的末尾,我有一个
if
语句,其中我检查ACL:

public function preDispatch() {

    // some code...

    if (!$this->_acl->isAllowed($role, $resource, $privilege)) {
        $request->setModuleName('default');
        $request->setControllerName('index');
        $request->setActionName('login');

        $request->setDispatched(false); //what does this mean exactly??
    }
}
因此,当我想访问
fooAction()
,而用户没有权限时,我将操作名设置为“login”

现在我的问题是:
$request->setDispatched(false)是什么确切的意思是什么

它是否表示ZF可以开始分派登录操作(),因为它尚未分派(setDispatched(false);)?

来自:

在每次迭代开始时,它在请求中设置一个标志 对象,指示已调度操作。如果一项行动或 pre或postDispatch插件重置该标志,调度循环将 继续并尝试分派新请求。通过改变 控制器和/或请求中的操作,并重置已调度的 标记时,开发人员可以定义要执行的请求链

调用
setDispatched(false)
基本上就是说请求尚未发送到控制器,调度器将尝试重新发送它。这是必要的,因为您正在更改请求的模块、控制器和操作,并且希望调度器再次处理该请求并将其发送到正确的位置