6

我正在尝试为我的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 方法无法正常运行?

任何帮助将不胜感激,谢谢

阿兰

4

1 回答 1

9

您不能$CI在挂钩中访问实例pre_controller- 根据文档:

pre_controller hook在调用任何控制器之前立即调用。所有基类、路由和安全检查都已完成..

它是Controller允许访问的 CI get_instance()。在实例化控制器之前,没有任何东西可以获取

试试看post_controller_constructor,看看这是否能让你得到想要的结果。

system/Core/Controller.php

class CI_Controller {

// <snip>

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

}
    // END Controller class
于 2011-04-20T16:49:11.133 回答