Сопоставимые средства для имитации использования exit в CodeIgniter

#php #codeigniter #codeigniter-2 #codeigniter-url

#php #codeigniter #codeigniter-2 #codeigniter-url

Вопрос:

Я новичок в CodeIgniter. Ранее я разработал сценарий входа, который сделал бы так, чтобы страница входа выглядела как та же страница, которую просматривал пользователь, имея строки, похожие на следующие:

 include('loginpage.php');
exit;
  

Но с CodeIgniter следующие результаты ничего не отображают, потому что функциональность выходного класса не была выполнена полностью:

 $this->load->view('loginpage');
exit;
  

Итак, мой вопрос: существуют ли какие-либо альтернативные средства для имитации функциональности моего предыдущего метода? В конечном счете, я предпочитаю этот подход, потому что при использовании кажется, что они находятся на странице, которую они запросили, только им нужно сначала войти в систему, чтобы увидеть это, если они этого еще не сделали.

Ответ №1:

Попробуйте:

 $msj= $this->load->view('loginpage',$data,true);
exit($msj);
  

Комментарии:

1. Кажется, это работает … есть ли что-то неправильное в использовании этого метода? Мешает ли это codeigniter выполнять что-либо важное?

2. Неплохо… но не для всех случаев. Я использую его только в защищенных контроллерах.

Ответ №2:

Один из способов сделать это в codeigniter заключается в том, что внутри вашего класса контроллера вы сначала проверяете логин. Это можно сделать в конструкторе:

 function __construct()
{
    parent::__construct();
    $this->_checkLogin();
}
function checkLogin()
{
    $loggedIn = $this->getLoggedIn();
    if(!$loggedIn)
    {
        $this->load->view('loginpage');
        exit;
    }
}
  

Эта функция будет выполнена перед любым другим действием контроллера. Если вам это нужно глобально во всем вашем приложении, и у вас есть несколько контроллеров, сделайте любой из ваших контроллеров расширяемым от базового контроллера, специфичного для вашего приложения. Смотрите Замену основных классов в http://codeigniter.com/user_guide/general/core_classes.html .

Комментарии:

1. На самом деле это подход, который я пробовал до сих пор … view() сохраняет представление в классе вывода, который выводится после выполнения остальной части кода. Я не хочу, чтобы остальная часть моего кода выполнялась, хотя для codeigniter нормально выполнять свой код.