2011-02-12 10 views
2

전적으로 PHP로 개인적인 프레임 워크를 개발 중입니다.리디렉션 MVC 내의 PHP

컨트롤러 내부의 메소드에서 다른 페이지로 리디렉션한다고 가정 해 봅시다. 적어도 개념적으로.

+0

http://php.net/manual/en/function.header.php – stecb

+1

귀하의 질문은 MVC와 관련이 없습니다. – mario

+2

마리오, 당신은 그의 질문을 이해하지 못했습니다. 아래 답변을 살펴보십시오. – Nathan

답변

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

이 코드는 스크립트의 첫 번째 출력이어야합니다. 클라이언트에 출력을 생성 한 후에 리디렉션을 수행 할 수 없습니다. 리디렉션을 클라이언트에 보내면 생성 된 추가 출력이 사용자에게 표시되지 않으므로 스크립트를 종료 할 수 있습니다. 당신이 MVC를 개발하는 경우

+0

+1. 나는 사람들이 왜 코멘트 섹션에서 답변을 제공하는지 이해하지 못했지만, 상황을 바로 잡아 주셔서 감사합니다. –

10

당신은 입력 클래스와 출력 클래스가 있어야합니다 (를 I/O), 당신은 출력 클래스 내에서 재라는 함수를 작성하고 다음처럼 기본 URL에서 새 URL을 구축해야합니다

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 
    */ 
} 
+0

+1 감사합니다. 나도 도와 줘. – Nathan