我正在尝试为我的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方法无法正常运行?
任何帮助将不胜感激, 感谢
阿兰
答案 0 :(得分:9)
根据文档,您无法访问$CI
挂钩中的pre_controller
个实例:
pre_controller hook 在调用任何控制器之前立即调用。所有基类,路由和安全检查都已完成..
允许访问Controller
的CI 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