Citation

J’ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé : je ne sais plus comment utiliser mon téléphone.

Bjarne Stroustrup

mercredi 9 janvier 2013

FuelPHP Pas à pas #3 - erreur 404

Si le contrôleur ou l'action n'existe pas, comment je fais pour afficher une page 404 personnalisée ?
En fait c'est assez simple, une page 404 est une page "normale" dans FuelPHP sauf que...

Création d'une page 404 personnalisée

On va partir du contrôleur Step2 et ajouter une action "action_erreur404". Comme pour l'action index, on va juste afficher une page statique. Le code du contrôleur devient alors:

 <?php
class Controller_Step2 extends Controller {
   public function action_index() {
      return Response::forge(View::forge('step2/index'));
   }
   public function action_erreur404() {
      return Response::forge(View::forge('step2/erreur404'), 404);
   }
}


De la même manière que pour l'action index, l'action erreur404 renvoie simplement une page HTML. Sauf qu'il y a un paramètre en plus à Response::forge: le status. La doc de Response est http://fuelphp.com/docs/classes/response.html.
Le code de cette page HTML sera placé dans APPPATH/views/step2/erreur404.php et pourrait être:

<?php echo Html::doctype('xhtml1-strict');?>
<html>
<head>
   <meta charset="utf-8">
   <title>Step 2 - Erreur 404</title>
</head>
<body>
   <h1>Step 2 - Erreur 404</h1>

</body>
</html>


Si on va à l'adresse http://localhost/fuelphp/public/page_inconnue  ... on ne se retrouve pas sur notre page d'erreur 404 mais sur une belle page fournit par FuelPHP. La raison en est que par défaut FuelPHP fournit une page d'erreur 404 et que nous n'avons pas dit au framework d'utiliser notre page 404. Il faut modifier le fichier APPPATH/config/routes.php en remplaçant la valeur de "_404_" par :

'_404_'   => 'step2/erreur404',    // The main 404 route

Maintenant l'adresse http://localhost/fuelphp/public/page_inconnue renvoie bien sur notre page 404.
A noter que si aucune valeur n'est affecté à "_404_", le framework génère quand même une page avec un message 404.

Aucun commentaire:

Enregistrer un commentaire