Класс контроллера клиента CodeIgniter сообщает, что сессия не определена - PullRequest
4 голосов
/ 29 сентября 2010

Я использую CodeIgniter (v1.7.2) и создал собственный контроллер с аутентификацией MY_Controller (на основе сообщения в блоге Дэвида Винтера) Когда я загружаю любые контроллеры, которые используют этот базовый класс, я получаю эту ошибку;

* Сообщение: неопределенное свойство: MY_Controller :: $ session *

Обратите внимание, что я автоматически загружаю 'session' (и 'MY_controller' как библиотеку) примерно так:

$autoload['libraries'] = array('database', 'session', 'MY_Controller');

Вот MY_Controller:

class MY_Controller extends Controller {
    public function __construct() {
        parent::__construct();      
        if (!$this->session->userdata('loggedin')) { <-- error is here
            header('Location: /sessions/login');
            exit();
        }
    }
}

Вот контроллер, который я пытаюсь загрузить:

class Welcome extends MY_Controller {

    function  __construct() {
        parent::__construct();
    }

    function index() {
        $this->load->view('header');
        $this->load->view('welcome_message');
        $this->load->view('footer');
    }
}

Когда я var_dump $this->session выше, где происходит ошибка, я вижу, что это NULL. Даже помещение $this->load->library('session'); в конструктор MY_Controller не работает. Почему он не загружается должным образом?

Спасибо

1 Ответ

5 голосов
/ 29 сентября 2010

Попробуйте вывести MY_Controller из автозагрузки.

$autoload['libraries'] = array('database', 'session');

Вы расширяете класс контроллера, который автоматически загружается codeigniter, поскольку он является частью ядра

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