Problème CodeIgniter 2.1 avec show_404 () et 404_override
J'ai travaillé avec CodeIgniter pour un bon moment maintenant et je suis actuellement en train de faire un projet pour un client qui souhaite une coutume 404 page. Tout est beau et le 404_override
il fonctionne très bien.
Mon problème vient quand un visiteur tente d'accéder à un article qui n'existent pas, je tiens à appeler l' show_404()
fonction, mais cela me montre le "out of box"
de la page 404 et pas celle qui est écrite dans le 404_override.
J'ai vu certains des correctifs pour les versions plus anciennes, mais je ne peux pas le faire fonctionner dans 2.1. Donc, si quelqu'un peut m'aider j'en serait vraiment reconnaissant.
source d'informationauteur Casper O | 2011-12-07
Vous devez vous connecter pour publier un commentaire.
Redirection est plus propre; chargement d'un point de vue pourrait fonctionner aussi.
Le problème ici est que show_404() est généralement appelé APRÈS votre contrôleur a déjà chargé (quelque chose a dire il montre les 404, après tout). CI n'aime pas le chargement d'une deuxième contrôleur à ce point, qui est le principal obstacle.
Votre meilleure option est probablement l'extension de la show_404() fonction dans les Exceptions de la classe rediriger vers votre 404 route. Sans une redirection, vous serez coincé avec montrant une vue ou quelque chose que vous savez a tous les "données supplémentaires" il a besoin avant d'appeler le 404 (ou je suppose que vous pouvez charger dans les Exceptions de la classe de trop). Il peut être très compliquée dans certaines vues dynamiques.
Manifestement, vous voulez quelque chose de plus avancé que la simple édition du 404 modèle dans les erreurs de dossier. J'ai eu des problèmes en essayant d'accès get_instance() à partir de ce fichier, comme parfois, il est chargé avant que le contrôleur est construit. Alors, soyez prudent si vous essayez de faire cela 😉
Mise à jour: Voici un exemple de travail de l'extension de la show_404() permet de charger une vue
Mon jeûne approche pour résoudre le problème est de créer une fonction dans un chargé helper fichier dans le projet, je travaille sur. Cette aide juste redirige vers la page 404 personnalisée. Donc je viens de l'appeler
show_my_404()
au lieu deshow_404()
J'ai été la recherche de la même chose, mais a trouvé une assez longue des solutions, comme la création d'une erreur de contrôleur et de la classe exception ou tout simplement la redirection vers la page d'erreur 404 (qui n'est pas bon du point de vue sémantique).
J'ai donc fait peu de recherche sur la façon CI appelle " 404_override route en interne. Voici la solution, je suis venu avec:
Ajouter cette fonction dans system/core/CodeIgniter.php fichier.
Cela va remplacer show_404 fonction. Vous pouvez appeler à partir de votre contrôleurs et il va appeler '404_override' itinéraire donné dans routes.php fichier.