Codeigniter не зарежда CI супер обект

Опитвам се да напиша кука за моето 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 не функционира правилно?

Всяка помощ ще бъде оценена, благодаря

Ален


person criticerz    schedule 20.04.2011    source източник
comment
Опитайте var_dumping на променливата $CI   -  person JohnP    schedule 20.04.2011
comment
Каква версия на PHP използвате? Нещо като $CI =& get_instance(); ми прилича на PHP4 код   -  person afuzzyllama    schedule 20.04.2011
comment
@afuzzyllama: Как изглежда това като PHP4 код? Той присвоява променлива чрез препратка към изхода на get_instance() (функция). Какво е PHP4 за това?   -  person Wesley Murch    schedule 20.04.2011
comment
Моя грешка, мислех, че е нещо подобно на това, но не е... php.net/manual/en/language.operators.assignment.php   -  person afuzzyllama    schedule 20.04.2011


Отговори (1)


Нямате достъп до екземпляра $CI в кука pre_controller - според документите:

pre_controller hook Извиква се непосредствено преди някой от вашите контролери да бъде извикан. Всички базови класове, маршрутизиране и проверки на сигурността са направени..

Това е CI Controller, който позволява достъп до get_instance(). Докато контролерът не бъде създаден, няма какво да получавате.

Опитайте post_controller_constructor вместо това и вижте дали това ще ви донесе желаните резултати.

In system/Core/Controller.php:

class CI_Controller {

// <snip>

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

}
    // END Controller class
person Ross    schedule 20.04.2011
comment
Разбрах го. След това се върна и видя това. Перфектен отговор! Благодаря ти! - person criticerz; 20.04.2011