Afficher une vue pour l'erreur 404 dans CodeIgniter

le CodeIgniter a un message d'erreur 404 par défaut très simple:

404 Page Not Found
The page you requested was not found.

au lieu d'utiliser ce message d'erreur sur une page totalement vierge, je veux envelopper ce message entre mon en-tête et la vue de pied de page, de sorte que le message d'erreur ont un aspect similaire aux autres pages.

dans ce but, j'ai créé une vue d'erreur? Par exemple:

my404_view.php

<? $this->load->view('header'); ?>
404 Page Not Found
The page you requested was not found.
<? $this->load->view('footer'); ?>

MAINTENANT, Comment puis-je utiliser ce my404_view.php comme vue par défaut pour afficher des messages 404 au lieu d'utiliser le message d'erreur par défaut de CodeIgniter.

10
demandé sur Roman 2011-07-20 11:13:48

3 réponses

vous devez changer vos itinéraires.php. Par exemple:

dans application/config/routes.151930920 php"

$route['404_override'] = 'welcome/_404';

dans application/controllers/welcome.151930920 php"

function _404(){
    $this->load->view("my404_view");
}

et cela devrait être suffisant dans la version actuelle de CI.

17
répondu Alfonso Rubalcava 2011-07-20 17:50:22

incluant les en-têtes et les pieds de page dans la page par défaut error 404 semble être un problème courant pour les utilisateurs CodeIgniter. Je voudrais ajouter ce lien: les commentaires de Simon Emms à http://www.simonemms.com/2011/05/06/codeigniters-404-override-problem / parce qu'il décrit le problème si clairement. J'ai essayé les suggestions à http://maestric.com/doc/php/codeigniter_404 et a joué avec les idées de Simon Emms, et d'autres, mais ne peut pas les mettre en œuvre. Je suis un peu novice chez PHP et CodeIgniter, donc c'est peut-être à cause de l'ignorance. Cela dit, il est difficile de s'assurer que vous mettez les sous-classes suggérées aux bons endroits et configurez, par exemple, les routes.php correctement. Après 3 jours à essayer les diverses idées plutôt compliquées, il m'est venu à l'esprit que je pouvais juste utiliser une instruction include dans la page par défaut error 404. La seule difficulté a été de trouver le chemin pour passer à l'instruction include. Dans /système/base/Exceptions.php line 146, j'ai trouvé que les développeurs CodeIgniter utilisent APPPATH. Vous n'avez alors qu'à ajouter le chemin aux pages d'en-tête et de pied de page que vous voulez inclure. Ma nouvelle page par défaut d'erreur 404 ressemble maintenant à ceci:

<?php
include APPPATH.'/views/templates/header.php';
?>
<div id="container">
    <h1><?php echo $heading; ?></h1>
    <?php echo $message; ?>
</div>
<?php
include APPPATH.'/views/templates/footer.php';
?>

cela me semble une solution beaucoup plus facile que d'essayer de changer les classes de base dans CodeIgniter.

4
répondu DavidHyogo 2012-01-15 01:55:25