我的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
位于根应用程序中。
我该如何解决这个问题?
答案 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');
}
希望这有帮助