2012-12-08 57 views
0

我的loginAction位於模塊user中,位於控制器application/modules/user/controllers/AuthController.php中。我想成功登錄後重定向到indexActionapplication/controllers/IndexController.php。所以我有這樣的:Zend1:重定向到不同模塊中的動作

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

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

      return; 
} 

現在當我登錄時,我得到的消息Message: Invalid controller specified (index)。我想這是因爲我的登錄名是模塊user中,而IndexController是在應用程序根。

我該如何解決這個問題?

+0

'應用/控制器/ Index.php'是一個有效的控制器。這應該是這樣'應用/模塊/ {模塊名} /控制器/ IndexController.php' –

+0

@NandakumarV這是一個錯字,我糾正它。 – Lanbo

+0

模塊呢?您是否在同一應用程序中同時使用模塊化和非模塊化方法? –

回答

4

重定向()動作助手有幾種方法來重定向請求。

試試這個,在應用控制器/控制器是在「默認」模塊:

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'); 
    } 

希望這有助於