Php setDispatched()澄清
问题是关于Zend Framework的路由器setDispatched()方法 我在同一个控制器(indexController)中有一个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
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)
基本上就是说请求尚未发送到控制器,调度器将尝试重新发送它。这是必要的,因为您正在更改请求的模块、控制器和操作,并且希望调度器再次处理该请求并将其发送到正确的位置