Cakephp - comment rendre les pages d'erreur ont leurs propres dispositions?
Je veux avoir une mise en page différente de la page non trouvée la page d'erreur 404. Comment puis-je définir une mise en page différente de la page?
source d'informationauteur Harsha M V
Vous devez vous connecter pour publier un commentaire.
Savant de l'IRC m'a aidé et il suggère à l'aide de
beforeRender(){}
dans le app_controllerCakeError est un fourre-tout pour les erreurs 😀
Dans CakePHP 2.2.2 j'ai changé le ExceptionRenderer dans core.php avec mes propres, comme ceci:
app/Config/core.php:
app/Lib/Error/MyExceptionRenderer.php:
préférable de créer un error.php fichier dans votre dossier app
de sorte que vous pouvez éviter les cas-tests à CHAQUE page de rendu que les savants solution présente
Juste vous devez apporter des modifications de mise en page de votre error400.ctp fichier dans /app/View/Erreurs/error400.ctp
Ouvrez ce fichier et mis en page par
Ma solution pour CakePHP 2.3
Changer le ExceptionRenderer dans core.php pour utiliser votre propre moteur de rendu.
app/Config/core.php:
app/Lib/Error/MyExceptionRenderer.php:
L'avantage de cette approche est qu'elle permet d'assurer toutes les exceptions levées de AppController de ne pas provoquer une boucle infinie lors du rendu de l'exception. Forces un rendu de base de l'exception de message à chaque fois.
Cette façon la plus simple que je connaisse est de créer cette fonction dans votre
AppController
:Vous pouvez ensuite faire ce que vous voulez avec l'erreur, de l'afficher comme bon vous semble, ou de ne pas afficher à tous, envoyez un e-mail etc.. (je ne sais pas si cette méthode si elle est encore valide.)
Il existe également une option de création de
app_error.php
dans votre application de racine, avecclass AppError extends ErrorHandler
ce qui vous permet de remplacer toutes sortes d'erreurs. Mais je n'ai pas fait encore, donc je ne peux pas vous en dire plus à ce sujet.Voir cake/libs/error.php et cake/libs/object.php et bien sûr Le Livre pour plus d'info.
Edit: Oublié de mentionner, une fois que vous avez attrapé l'erreur, il n'y a rien d'empêcher de vous - par exemple - magasin de l'erreur de la session de redirection vers votre "erreur de manipulation contrôleur", puis l'afficher dans votre contrôleur vous le souhaitez.