Zend 2似乎执行"redirect() - > 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似乎首先通过Controller Actions和Views然后执行重定向.但是,如果我做"返回假"; 在我调用"重定向"后,重定向按预期工作.
知道为什么zend以这种方式处理重定向?
您必须从Redirect插件返回响应对象
return $this->redirect()->toUrl('/auth?page=' . urlencode($_SERVER['REQUEST_URI']));