Bonjour j'aimerais faire une page erreur 404 sur mon site après recherche sur google je suis tombé sur ce lien :
http://stackoverflow.com/questions/9620363/cakephp-2-0-how-to-make-custom-error-pages
le problème c'est que j'ai un erreur que je ne comprends pasFatal error: Class 'AppExceptionRenderer' not found in C:\wamp\www\chapel\lib\Cake\Error\ErrorHandler.php on line 125
Quelqu'un peut m'eclairer?
Merci

8 réponses


C'est pas compliqué sur CakePHP de renvoyer une erreur 404. Tu n'as pas besoin de créer un contrôleur. Tu dois tout simplement lever l'exception NotFoundException : throw new NotFoundException();

L'exception rendra une vue que tu aura crée (c'est peut-être déjà là par défaut): app/View/Errors/error404.ctp
http://book.cakephp.org/2.0/en/development/exceptions.html

À la limite, si tu veux pas de l'entête de réponse 404, tu peux toujours rendre la vue manuellement: ($this->render('app/View/Errors/error404.ctp');

Ramz.

wenz
Auteur

Ramzz merci pour ta reponse,
j'avais fait ça comme, mais sur la page retournée, j'ai encore l'icone de cake avec des requete sql en bas confère l'image jointe.

c'est normal?

Ca ça provient du layout par défaut. Si tu veux également changer le layout, il faut le déclare via $this->layout.

wenz
Auteur

ok merci, mais je dois préciser ça ou.?

wenz
Auteur

je l'ai précisé dans le controller de la vue de cette manière:

public function index(){
       if(!$this->User->exists()){

    throw new NotFoundException('aucune page ne correspond');
    $this->layout='error404';
     }
   }

mais ça n'as pas eu d'effet, oubien j'ai mal procédé?

Il faut que le layout existe.

wenz
Auteur

merci, ça marche c'est plutot moi qui avait mal procédé merci,
mais si je voudrais personnaliser le message je le fais ou?

tu peu aussi spécifié ton layout à utiliser dans ta vue error404.ctp de la même facon
Ca t'évitera a chaque fois que tu throw ton execption que tu spécifie le layout a utilisé ;)