2011-02-12 96 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 
    */ 
}