Zend 2似乎不会直接执行"重定向()->toUrl()"(如果调用的话)。
我有以下代码:
public function onBootstrap('Zend'Mvc'MvcEvent $e) {
$em = $e->getApplication()->getEventManager();
$em->attach('Zend'Mvc'MvcEvent::EVENT_DISPATCH, array($this, 'onDispatch'));
}
public function onDispatch('Zend'Mvc'MvcEvent $e) {
$auth = new 'Auth'Model'AuthModel($this->sql, $this->config);
if (!$auth->isLoggedin()) {
$this->redirect()->toUrl('/auth?page=' . urlencode($_SERVER['REQUEST_URI']));
//return false;
}
parent::onDispatch($e);
}
因此,如果我运行上面的代码,它不会在调用时直接重定向。Zend似乎首先通过控制器操作和视图,然后执行重定向。但是,如果我在调用"重定向"后执行了"return false;",重定向将按预期工作。
知道zend为什么用这种方式处理重定向吗?
您必须从重定向插件返回响应对象
return $this->redirect()->toUrl('/auth?page=' . urlencode($_SERVER['REQUEST_URI']));