No consigo extender con MY_Exceptions

43 views
Skip to first unread message

Jorge

unread,
Nov 20, 2012, 4:54:24 AM11/20/12
to codeignit...@googlegroups.com
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.

Jorgeska

unread,
Nov 21, 2012, 4:19:14 AM11/21/12
to codeignit...@googlegroups.com
Parece ser que es por la estructura de carpetas que utilizo (a pesar de ser la que recomienda el tutorial de CI para entornos multiproyecto). El caso es que en la estructura standard simple funciona todo perfectamente.

He oído que para entornos multi-aplicación hay que utilizar la siguiente estructura:

www
.example.com
----aplication_app1
--------cache
--------config
--------controllers
--------errors
--------libraries
--------models
--------views
--------core
--------helpers
--------hooks
--------language
--------logs
--------third_party
----aplication_app2
--------cache
--------config
--------controllers
--------errors
--------libraries
--------models
--------views
--------core
--------helpers
--------hooks
--------language
--------logs
--------third_party
----system
----htdocs_app1
--------index.php
----htdocs_app2
--------index.php


¿Vosotros cómo lo hacéis?
Reply all
Reply to author
Forward
0 new messages