我正在使用Zend Framework 1开发一个网站,该网站需要登录才能访问,并创建了一个名为loginAction的控制器名称UserController,以方便登录。目前,我有系统设置,所以如果他们尝试访问该站点并且他们没有登录但是它会改变URL并且我们不希望这发生,它将用户重定向到/ user / login。如果用户还没有登录,这让我想到了在控制器内部切换控制器的问题。到目前为止我有这个:
require_once(APPLICATION_PATH . '/controllers/UserController.php');
$this->_helper->viewRenderer->renderBySpec('login', array('controller'=>'user'));
$controller = new UserController($this->getRequest(),$this->getResponse());
return $controller->loginAction();
这仍然呈现我正在尝试隐藏的页面,但它似乎确实在调用loginAction。有没有人有更好的方法来做到这一点或我如何解决它?
答案 0 :(得分:3)
您可以尝试在控制器内调用preDispatch方法:_forward()。
public function preDispatch()
{
parent::preDispatch();
if (!is_user_logged) {
$this->_forward('login','user');
}
}