CodeIgniter, контроллер заголовка не загружает индексный метод

0

Во-первых, я не получаю ошибок, я пытаюсь создать метод 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() в моей работе с кодом не работает. Все, что я добавляю в индексную функцию контроллера (которое, насколько мне известно, загружается по умолчанию), не выполняется.

заранее спасибо

  • 0
    Вы называете этот контроллер? Я имею в виду, ваш URL выглядит как example.com/index.php/Header ?
  • 0
    У вас есть конструкторы с parent :: __ construct ()? Вы можете не иметь $ this-> db внутри вашей модели, если у вас нет конструктора, и в этом случае у вас ошибка php несуществующей переменной ...
Показать ещё 1 комментарий
Теги:
debugging
codeigniter-2

3 ответа

0

Если вы хотите называть этот код прозрачно (то есть без необходимости добавлять лишний беспорядок в 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 будет запускаться перед любым из ваших методов.

0

Поскольку AdrienXL указывал, что контроллер загружен только whern, имя url/имя_контроллера вызывается.. Это было не в случае сценария моего пользователя.

Кроме того, что стоит упомянуть как упомянутый выше Севтило, если вы создаете метод построения в CodeIgniter, вы огласите dafult-вызовы для таких вещей, как $this-> db class, используя:

public function __construct() {

    parent::__contsruct();

}

Получит родительский класс contsructor.

С уважением Рик

0

public function __construct() {parent :: __ construct(); } }

Добавьте этот метод в свою модель, иначе вы не будете загружать $this-> db

  • 0
    Готово, спасибо! Имеет смысл! Забыл об этой проблеме.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню