2011-02-12 91 views
2

我正在開發一個完全基於PHP的個人框架。在MVC中重定向PHP

比方說,我在一個控制器內的方法,我想重定向到另一個頁面,我該怎麼做?至少在概念上。

+0

http://php.net/manual/en/function.header.php – stecb 2011-02-12 17:57:22

+1

你的問題與MVC無關。 – mario 2011-02-12 18:07:17

+2

馬里奧,你不明白他的問題。請看下面的答案。 – Nathan 2012-02-18 04:06:46

回答

2
header("Location: http://domain.com/folder/page.html", 301); 
exit(); 

此代碼必須是腳本的第一個輸出。生成任何輸出到客戶端後,您無法執行重定向。一旦將重定向發送到客戶端,您可以退出腳本,因爲用戶不會看到生成的任何其他輸出。

10

如果你的開發MVC你應該有一個輸入級和一個輸出級(I/O),你應該創建一個名爲函數的輸出類中的重定向,並從自己的基本網址建立新的網址,像這樣:

public function redirect($controller,$method = "index",$args = array()) 
{ 
    global $core; /* Guess Obviously */ 

    $location = $core->config->base_url . "/" . $controller . "/" . $method . "/" . implode("/",$args); 

    /* 
     * Use @header to redirect the page: 
    */ 
    header("Location: " . $location); 
    exit; 
} 

這種方式在你的控制器中,你可以簡單地使用輸入類來做你的重定向。

class MyController extends BaseController 
{ 
    public function login() 
    { 
     if($this->library->session->exists("user_logged_in") === false) 
     { 
      $this->library->output->redirect("MyController","login",array("from:login")); 
     } 
    } 
    /* 
     ..More Here 
    */ 
}