Codeigniter не загружает суперобъект CI - PullRequest
6 голосов
/ 20 апреля 2011

Я пытаюсь написать хук для моего Codeigniter приложения.

Я пытаюсь поймать session в моем hook.

Вот мой код для загрузки хука:

$hook['pre_controller'] = array(
  'function' => 'getNav',
  'filename' => 'LoadNav.php',
  'filepath' => 'hooks'
);

А вот код, который я пытаюсь загрузить в хук:

function getNav()
{
     $CI =& get_instance();
     $level = $CI->session->userdata('level');
}

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

A PHP Error was encountered
Severity: Notice
Message: Trying to get property of non-object
Filename: hooks/LoadNav.php
Line Number: 7

Есть идеи, что я делаю не так? Похоже, что метод get_instance не работает правильно?

Буду признателен за любую помощь, Спасибо

Алена

1 Ответ

9 голосов
/ 20 апреля 2011

Вы не можете получить доступ к экземпляру $CI через pre_controller ловушку - согласно документам:

ловушка pre_controller Вызывается непосредственно перед вызовом любого из ваших контроллеров,Все базовые классы, маршрутизация и проверки безопасности выполнены.

Это CI Controller, который разрешает доступ к get_instance().До тех пор, пока не будет создан экземпляр контроллера, get .

вместо этого попробуйте post_controller_constructor и посмотрите, принесет ли это желаемый результат.

В system/Core/Controller.php:

class CI_Controller {

// <snip>

    public static function &get_instance()
    {
        return self::$instance;
    }

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