2011-07-20 36 views
5

He extendido el controlador CodeIgniter agregando MY_Controller.php en la carpeta Application/Core. Funciona bien, pero ahora cuando agrego el siguiente código en la página error_404.php en Application/errors, aparece un error.CodeIgniter: Class 'CI_Controller' no encontrado

Código problema que causa:

<?php $ci =& get_instance();?> 
<?php $this->ci->load->view('header')?> 

error:

Fatal error: Class 'CI_Controller' not found in path\to\system\core\CodeIgniter.php on line 231 

La línea 231 de la system\core\CodeIgniter.php es:

function &get_instance() 
    { 
     return CI_Controller::get_instance(); 
    } 

¿Cómo puedo solucionar este problema de manera que Puedo cargarme la vida w en el error_404.php sin cambiar nada en los archivos del sistema.

PS. Estoy usando la última versión.

Gracias.

Respuesta

4

No creo que CI_Controller esté cargado todavía. La clase Exception maneja la salida de la página 404 usando include.

En los viejos tiempos solía usar include s para unir una plantilla, o hacer una solicitud file_get_contents() o cURL a la URL de mi página 404, pero finalmente hicieron algo al respecto. En 2.0 se puede definir una página 404 personalizada en routes.php:

$route['404_override'] = 'controller/method/parameter'; 

Es todavía not a perfect solution, pero la forma más fácil ahora es sólo para usar la ruta.

Tenga en cuenta que base_url()."controller/method/parameter" debe ser una url válida, y debe asegurarse de establecer un encabezado 404 en el controlador que también emite la página (no se realiza automáticamente por algún motivo).

+0

Si está utilizando Composer para carga automática, este error también puede ser causado por un directorio de proveedor faltante. En este caso, corríjalo ejecutando 'composer install' en su servidor (recomendado) o cargándolo a través de FTP no podrá ejecutar un comando en su servidor. –

0

Probar:

<?php $ci =& get_instance();?> 
<?php $ci->load->view('header')?> 

Una vez que se ha asignado la instancia de CI a $ ci sólo se puede usar $ CI-> load-> view ('cabecera) a través de su archivo.

+0

Lo intenté también, no funciona. El error es causado por la primera línea, ya que permanece igual incluso si elimino la segunda línea. – Roman

4

he tenido este problema cuando se sigue el tutorial CodeIgniter aquí: http://codeigniter.com/user_guide/tutorial/static_pages.html

El problema fue que traté de acceder a la url:

localhost/CodeIgniter_2.1.1/application/controllers/pages.php

en lugar de dirigirse a la url:

localhost/CodeIgniter_2.1.1/index.php/pages/vista

Sé que ha sido alrededor de 18 meses desde que esa pregunta, pero tal vez puedo ayudar a alguien más :)

4

o usted podría intentar esto, quizá poco sucio, pero creo que va a trabajar para mí

actualización de su excepción a

function show_404($page = '', $log_error = TRUE) { 
    if ($log_error) { 
    log_message('error', '404 Page Not Found --> '.$page); 
    } 
    header('Location: http://www.########.###/error/error_404'); 
    die(); 
} 

luego simplemente crear controlador para controlar la redirección, tal vez con diferentes errores se puede utilizar el mismo controlador

de esa manera obtendrá su encabezado y pie de página dinámico

Cuestiones relacionadas