A free and open-source book on ZF3 for beginners

Translation into this language is not yet finished. You can help this project by translating the chapters and contributing your changes.

4.8. Afficher les erreurs

Parfois, les choses ne se passent pas comme prévues et une erreur se produit. Par exemple, vous vous attendez à recevoir une variable GET de la requête HTTP mais elle est manquante ou sa valeur n'est pas valide. Pour afficher cette erreur, vous générez généralement un statut code 4xx dans la réponse HTTP que vous renvoyez depuis l'action du contrôleur.

Par exemple, dans une application type blog, supposons qu'un utilisateur saisisse l'URL suivante dans la barre de navigation de son navigateur: http://localhost/posts/view?id=10000. Son intention est d'afficher l'article qui a un ID = 10000. Si l'article correspondant n'existe pas, nous ne pouvons pas l'afficher et nous allons utiliser le code 400(Page introuvable) comme code d'état dans la réponse:

// L'action "view" affiche un article de blog avec l'ID spécifié
public function viewAction()
{
    // Récupère l'argument ID de la requete GET
    $id = (int)$this->params()->fromQuery('id', -1);
    
    // Valide l'argument
    if ($id<1) {
        // Erreur - nous ne pouvons pas afficher un tel post
        $this->getResponse()->setStatusCode(404);
        return;
    }
    
    // On essaye de trouver le message (nous omettons la requête SQL pour plus de simplicité).
    $post = ...
    if (!$post) {
        // Erreur - message non trouvé
        $this->getResponse()->setStatusCode(404);
        return;
    }
    
    // Suite de l'execution du script
    // ...
}

Lorsque ZF3 se retrouve face à un code 4xx, il redirige l'utilisateur vers une page d'erreur dédiée. Nous parlerons des pages d'erreur plus tard dans ce chapitre.

Une autre façon de générer une erreur (critique) est de déclancher une exception, par exemple, comme ceci:

throw new \Exception("L'article dont l'ID=$id est introuvable");

Lorsque qu'une exception non gérée par ZF3 est rencontrée, s'affiche une autre page d'erreur spécifique avec des informations sur cette exception.


Top