0

我正在使用 Zend Framework 1 开发一个网站,该网站需要登录才能访问,并创建了一个控制器名称 UserController 和一个名为 loginAction 的操作以方便登录。目前,我有系统设置,因此如果用户尝试访问该站点并且他们没有登录,它会将用户重定向到 /user/login,但这会更改 URL,我们不希望这种情况发生。如果用户尚未登录,这使我达到了尝试在控制器内部切换控制器的地步。到目前为止,我有这个:

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。有没有人有更好的方法来做到这一点,或者我该如何解决?

4

1 回答 1

3

您可以尝试在控制器内部调用 preDispatch 方法:_forward()。

public function preDispatch()
{
    parent::preDispatch();
    if (!is_user_logged) {
        $this->_forward('login','user');
    }
}

参考: http: //framework.zend.com/manual/1.12/en/zend.controller.action.html#zend.controller.action.utilmethods

于 2012-11-26T15:46:07.757 回答