Перенаправление PHP внутри MVC - PullRequest
2 голосов
/ 12 февраля 2011

Я занимаюсь разработкой личной инфраструктуры исключительно на PHP.

Допустим, я нахожусь в методе внутри контроллера и хочу перенаправить на другую страницу, как бы я это сделал?По крайней мере, концептуально.

Ответы [ 2 ]

11 голосов
/ 12 февраля 2011

Если вы разрабатываете MVC У вас должен быть входной класс и выходной класс ( I / O ), вы должны создать функцию с именем redirect в выходном классе и построить новый 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
    */
}
2 голосов
/ 12 февраля 2011
header("Location: http://domain.com/folder/page.html", 301);
exit();

Этот код должен быть первым выводом скрипта. Вы не можете выполнить перенаправление после генерации любого вывода на клиент. После того, как вы отправили перенаправление клиенту, вы можете выйти из сценария, потому что любой сгенерированный дополнительный вывод не будет виден пользователю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...