Во-первых, я не получаю ошибок, я пытаюсь создать метод is_logged_in() в моей модели заголовка в Code Igniter, но ничего в методе индекса контроллера не загрузится. Я добавил die(); в него и даже это не исполнится, Вот мой код:
header.php - контроллер
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Header extends CI_Controller {
public function index() {
print_r($this->session->all_userdata());
$data = array();
$data['title'] = 'Wenso - Timesheet';
$username = $this->session->userdata('username');
$this->load->view('template/header', $data);
$this->load->model('header_model');
$is_logged_in = $this->header_model->is_logged_in($username);
die($is_logged_in);
}
}
header_model.php - Модель
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Header_model extends CI_Model {
public function is_logged_in($username){
$q = $this
->db
->where('email_address', $username)
->limit(1)
->get('users');
die($q->last_query());
if($q->row('username') != $username){
return FALSE;
} else {
return TRUE;
}
}
}
Примечание: ни одна из функций die() в моей работе с кодом не работает. Все, что я добавляю в индексную функцию контроллера (которое, насколько мне известно, загружается по умолчанию), не выполняется.
заранее спасибо
Если вы хотите называть этот код прозрачно (то есть без необходимости добавлять лишний беспорядок в uri), переместите код в конструктор расширения с именем MY_Controller.php в приложении/ядре, который немного похож на этот...
class MY_Controller extends CI_Controller {
public function __construct() {
parent::__construct();
print_r($this->session->all_userdata());
$data = array(); $data['title'] = 'Wenso - Timesheet';
$username = $this->session->userdata('username');
$this->load->view('template/header', $data);
$this->load->model('header_model');
$is_logged_in = $this->header_model->is_logged_in($username);
die($is_logged_in);
}
}
И тогда в ваших файлах приложений/контроллеров расширяется этот класс, как
class Some_controller extends MY_Controller{
function __construct (){
parent::__construct();
}
public function index(){
//your header code will be run before this or any other method in this class
}
}
И код из MY_Controller.php будет запускаться перед любым из ваших методов.
Поскольку AdrienXL указывал, что контроллер загружен только whern, имя url/имя_контроллера вызывается.. Это было не в случае сценария моего пользователя.
Кроме того, что стоит упомянуть как упомянутый выше Севтило, если вы создаете метод построения в CodeIgniter, вы огласите dafult-вызовы для таких вещей, как $this-> db class, используя:
public function __construct() {
parent::__contsruct();
}
Получит родительский класс contsructor.
С уважением Рик
public function __construct() {parent :: __ construct(); } }
Добавьте этот метод в свою модель, иначе вы не будете загружать $this-> db