在Zend Framework 1中切换控制器和控制器内部的动作

时间:2012-11-26 15:29:05

标签: zend-framework

我正在使用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。有没有人有更好的方法来做到这一点或我如何解决它?

1 个答案:

答案 0 :(得分: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