Zend 1:重定向到不同模块中的动作

时间:2012-12-08 09:51:54

标签: php zend-framework redirect

我的loginAction位于控制器user中的模块application/modules/user/controllers/AuthController.php中。我想在成功登录indexAction application/controllers/IndexController.php后重定向。所以我有这个:

if ($result->isValid()) {
            $auth->getStorage()->write($adapter->getResultRowObject());

            $this->_helper->redirector('index', 'index');

            return;
}

当我现在登录时,我收到消息Message: Invalid controller specified (index)。我想这是因为我的登录位于模块user中,而IndexController位于根应用程序中。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

redirector()动作帮助器有几种方法来重定向请求。

试试这个,应用程序/控制器的控制器位于 '默认' 模块中:

if ($result->isValid()) {
    $auth->getStorage()->write($adapter->getResultRowObject());
    //redirector($action, $controller, $module)
    $this->_helper->redirector('index', 'index', 'default');
}

我更喜欢使用这个帮助器的方式更明确,所以我不必记住默认值:

 if ($result->isValid()) {
        $auth->getStorage()->write($adapter->getResultRowObject());
        //gotoSimple($action, $controller, $module, $params = array())
        $this->getHelper(redirector)->gotoSimple('index', 'index', 'default');
        //or use gotoUrl($url)
        $this->getHelper(redirector)->gotoUrl('/index/index');
        //or use gotoRoute()
        $this->getHelper(redirector)->gotoRoute('action'=>'index', 'controller'=>'index', 'module' => 'default');
    }

以及快速而肮脏的实用方法:

 if ($result->isValid()) {
        $auth->getStorage()->write($adapter->getResultRowObject());
        //_redirect($url);
        $this->_redirect('/index/index');
    }

希望这有帮助