#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 нормально выполнять свой код.