Afficher les erreurs du formulaire à l'utilisateur

Dans le tutoriel précédent, notre validation était en place mais lors d'un problème avec l'envoi de l'utilisateur, aucun message d'erreur ne s'affichait.

Utilisation de la variable $errors

Par défaut, dans toutes nos vues, Laravel nous fournit une variable $errors qui contient les erreurs des formulaires, si il y en a. Cette variable nous fournit deux méthodes utilise parmis d'autres : has() et first(). La fonction has() permet de vérifier si un champ de notre formulaire contient une erreur, nous allons l'utiliser dans une condition. Pour faire une condition avec Blade, nous pouvons utiliser @if() … @endif.

<p><input type="email" name="email" placeholder="Email"></p>
@if($errors->has('email'))
    <p>Le champ « Email » a une erreur</p>
@endif

La fonction first() permet de récupérer la première erreur pour un champ du formulaire. Nous pouvons afficher le résultat avec les doubles accolades {{ }}.

<p><input type="email" name="email" placeholder="Email"></p>
@if($errors->has('email'))
    <p>{{ $errors->first('email') }}</p>
@endif

Ǹous pouvons répéter l'opération pour le mot de passe et la confirmation du mot de passe.

Utilisation de fonction old()

Lorsque nous envoyons notre formulaire avec une adresse email valide, mais un mot de passe incorrect (par exemple de moins de 8 caractères), l'email précédemment entré disparaît. C'est une bonne pratique de pré-remplir le formulaire avec les données déjà envoyées par l'utilisateur. Pour cela, nous pouvons utiliser la fonction old() fournie par Laravel qui permet de récupérer la valeur précédemment envoyée. Nous pouvons afficher le résultat de cette fonction dans la vue dans l'attribut value de notre balise input.

<p><input type="email" name="email" placeholder="Email" value="{{ old('email') }}"></p>
@if($errors->has('email'))
    <p>{{ $errors->first('email') }}</p>
@endif

Il est conseillé de pré-remplir uniquement les champs non sensibles comme l'adresse email, et de réinitialiser les champs de mot de passe.

Dans le prochain tutoriel, nous styliserons notre application avec un framework CSS. Et ensuite, nous devrons traduire les messages d'erreur avec Laravel.