2011-04-20 20 views
6

Estoy intentando escribir un gancho para mi aplicación Codeigniter.Codeigniter no está cargando CI súper objeto

Estoy tratando de atrapar un session en mi hook.

Aquí está mi código para cargar el gancho:

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

Y aquí es el código que estoy tratando de cargar en el gancho:

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

Se sigue echando un error que es el siguiente:

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

¿Alguna idea de lo que estoy haciendo mal? Parece que el método get_instance no funciona ¿verdad?

Cualquier ayuda se agradece, Gracias

Alain

+0

Trate var_dumping la variable '$ CI' – JohnP

+0

Se SALIDAS: NULL – criticerz

+0

¿Qué versión de PHP está usando? Algo como '$ CI = & get_instance();' se parece al código PHP4 – afuzzyllama

Respuesta

8

No se puede acceder a la instancia $CI en un gancho pre_controller - según los documentos:

pre_controller gancho Llamado inmediatamente antes a cualquiera de sus controladores que se llama. Todas las clases de base, enrutamiento y controles de seguridad se han hecho ..

Es la IC Controller que permite acceder a get_instance(). Hasta que se crea una instancia de un controlador, no hay nada para obtener.

Pruebe post_controller_constructor en su lugar y vea si eso le da los resultados deseados.

En system/Core/Controller.php:

class CI_Controller { 

// <snip> 

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

} 
    // END Controller class 
+0

Lo descubrí. Luego regresó y vio esto. ¡Respuesta perfecta! ¡Gracias! – criticerz

Cuestiones relacionadas