2011-04-20 48 views
6

我想爲我的Codeigniter應用程序寫一個鉤子。Codeigniter不加載CI超級對象

我試圖在我的hook中發現session

這裏是我的代碼加載鉤:

$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

嘗試var_dumping的'$ CI'變量 – JohnP 2011-04-20 15:29:00

+0

它。OUPUTS:NULL – criticerz 2011-04-20 15:36:20

+0

什麼版本的PHP您使用的是?像'$ CI =&get_instance();'看起來像我的PHP4代碼 – afuzzyllama 2011-04-20 15:59:07

回答

8

你不能在pre_controller鉤訪問$CI實例 - 按照文檔:

調用之前立即pre_controller鉤到任何你正在調用的控制器。已完成所有基類,路由和安全檢查。

它是CI Controller,它允許訪問get_instance()。在控制器實例化之前,得到

嘗試post_controller_constructor取而代之,看看是否得到您想要的結果。

system/Core/Controller.php

class CI_Controller { 

// <snip> 

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

} 
    // END Controller class 
+0

我想通了。然後回來看到這個。完美的答案!謝謝! – criticerz 2011-04-20 17:49:18