Hola.
Estoy empezando a utilizar CI 2.1.3. Trato de crear mi propia p�gina
personalizada de error 404. Os comento los pasos que he seguido, por si
me faltase alguno:
1 - route.php
$route['default_controller'] = 'pages';
$route['404_override'] = 'errors/error404'; # Mi p�gina de error 404
personalizada.
$route['pages'] = 'pages';
$route['news/create'] = 'news/create';
$route['news/(:any)'] = 'news/view/$1';
$route['news'] = 'news';
$route['blog/comments'] = 'blog/comments';
$route['blog'] = 'blog';
2 - errors.php
<?php
class Errors extends CI_Controller {
public function index()
{
$data['title'] = ucfirst('home'); // Capitalize the first letter
$this->load->view('templates/header', $data);
$this->load->view('pages/home', $data);
$this->load->view('templates/footer', $data);
}
public function error404()
{
echo '<br>MIERROR<br>';
show_404();
}
}
3 - MY_Exceptions.php (Prefijo 'MY_' correctamente definido en
config/config.php)
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class MY_Exceptions extends CI_Exceptions {
public function __construct()
{
parent::__construct();
}
function show_404($page = '', $log_error = TRUE)
{
$heading = "404 Page Not Found";
$message = "From MY_Exception class : The page you requested
was not found.";
// By default we log this, but allow a dev to skip it
if ($log_error)
{
log_message('error', '404 Page Not Found --> '.$page);
}
echo $this->show_error($heading, $message, 'error_404', 404);
exit;
}
}
4 - Introduzco
http://www.example.com/mal en el navegador y me lleva a
la siguiente p�gina ...
MIERROR
404 Page Not Found
The page you requested was not found.
... donde, como pod�is ver se lee MIERROR pero no MIEXCEPTIONCLASS. No
me est� cogiendo la clase extendida, sino la original. �Por qu�? �Puede
ser por la estructura de mis carpetas? Esta (resumida) es:
www.example.com
----aplication
--------cache
--------ci001_tutorial (aplicaci�n 1)
------------config
------------controllers
----------------blog.php
----------------errors.php
----------------news.php
----------------pages.php
----------------welcome.php
------------errors
------------libraries
------------models
------------views
--------ci002_otra_aplicacion (aplicaci�n 2)
--------core
----------------MY_Exceptions.php
--------helpers
--------hooks
--------language
--------logs
--------third_party
----cgi-bin
----codeigniter (=system)
----htdocs
--------index.php
----logs
Es la estructura que recomienda el tutorial de CI para manejar varias
aplicaciones.
He probado tambien a poner MY_Exceptions.php en ci001_tutorial/libraries
y nada.
�Por qu� no me lee de la clase extendida?
Un saludo.