2012-08-12 59 views
1

這是我的Zend框架的目錄結構(只包括你需要什麼):重定向到不同的視圖控制器

-Controllers 
    -HomeController.php 
    -IndexController.php 
-Views 
    -scripts 
     -home 
      -index.phtml 
     -index 
      -index.phtml 

IndexController我想自動重定向到主視圖。

我該如何做到這一點?

這是我到目前爲止已經試過:

header('/application/views/home'); 

我想重定向到一個不同的視圖和控制器一起。在同一個控制器中沒有不同的動作。

+0

我認爲路由是你需要的http://framework.zend.com/manual/en/zend.controller.router.html – MilMike 2012-08-12 11:13:09

回答

2

你有一些選擇:

使用_redirect動作utility method(很常見)

public function indexAction() { 
    $this->_redirect('/application/views/home'); 
} 

或使用_forward行動utility method只是執行請求的操作,而無需實際重定向

public function indexAction() { 
     $this->_forward('index', 'home'); 
    } 

你可以使用動作助手redirector,類似於_redirect,但有更多的選項。

public function indexAction() { 
      $this->getHelper('Redirector')->gotoSimple('index','home'); 
     } 

這大約涵蓋了控制器的內部重定向的基礎知識,如果要實際呈現home/index.phtml/idex/index你可以使用viewrenderer action helper

我會讓你解開這些祕密。

1

如果你想呈現目前的行動中另一個動作就可以你的行動中,通過以下方式:

$this->render('actionName'); 

,或者明確地設置模板來渲染

$this->renderScript('path/to/viewscript.phtml'); 

UPDATE:再讀你的問題,我想你想用

_forward($action, $controller = null, $module = null, array $params = null):執行另一個操作。如果在preDispatch()中調用,則當前請求的動作將被跳過,以支持新動作。否則,在處理完當前操作之後,將執行_forward()中所請求的操作。

_redirect($url, array $options = array()):重定向到另一個位置。這個方法需要一個URL和一組可選的選項。默認情況下,它執行HTTP 302重定向。

請參閱documentation關於這個問題。

+0

我想重定向到不同的視圖和控制器。不是同一個控制器內的動作 – RSM 2012-08-12 11:15:31

+0

@RyanMurphy,已更新。 – 2012-08-12 11:18:55

相關問題