Les données incorrectes ou malveillantes peuvent compromettre la sécurité et la cohérence de votre base de données.
Sans validation appropriée, vous risquez des erreurs d’insertion, des doublons et des failles de sécurité.
Dans cet article, nous explorons comment Laravel assure une validation efficace des données pour protéger et optimiser votre application.
Initiez-vous à Laravel et réalisez votre première application en toute confiance.
Avant d’ajouter un nouvel article dans la base de données, il est essentiel de valider les données soumises par l’utilisateur afin de garantir qu’elles respectent certaines règles de cohérence et de sécurité. Cela permet d’éviter l’insertion de données incorrectes ou malveillantes dans la base de données. Dans cette étape, nous allons aborder la validation des données dans la méthode store du contrôleur, ainsi que l’affichage des erreurs dans le formulaire, notamment pour le champ de catégorie.
Validation des données : méthode store Laravel
Nous allons d’abord ajouter une validation des données dans la méthode store pour nous assurer que les informations envoyées par l’utilisateur respectent certaines règles.
Code modifié de la méthode store dans ArticleController :
public function store(Request $request)
{
request()->validate([
'title'=>['required','max:20','unique:articles,title'],
'content'=>['required'],
'category'=>['sometimes','nullable','exists:categories,id'],
]);
$article=new Article();
$article->user_id =auth()->id();
$article->category_id=request('category',null);
$article->title=request('title');
$article->slug=Str::slug($article->title);
$article->content=request('content');
$article->save();
$success ='Article ajouté';
return back()->withSuccess($success);
}
Explications des règles de validation :
- ‘title’ => [‘required’, ‘max :255′, ‘unique:articles,title’]required: Le champ title est obligatoire, il ne peut pas être vide.max:255: Le titre ne doit pas dépasser 255 caractères.unique:articles,title: Le titre de l’article doit être unique dans la table articles pour éviter les doublons.
-
‘content’ => [‘required’]
- Le contenu de l’article est également obligatoire.
- ‘category’ => [‘sometimes’, ‘nullable’, ‘exists :categories,i’]sometimes: Cette règle indique que la validation du champ category est appliquée uniquement si ce champ est présent dans la requête.nullable: Le champ peut être vide (il est optionnel).exists:categories,id: Si la catégorie est présente, elle doit exister dans la table categories et être un id valide.
- Le contenu de l’article est également obligatoire.
Gestion des erreurs de validation en formulaire
Maintenant, nous allons modifier le formulaire dans create.blade.php pour afficher les erreurs de validation lorsque l’utilisateur soumet un formulaire incorrect.
Code du formulaire avec validation des erreurs dans article/create.blade.php :
- old(‘title’)etold(‘content’) :La fonction old() permet de pré-remplir les champs avec les valeurs saisies précédemment, afin que l’utilisateur ne perde pas les données déjà entrées lorsqu’une erreur est survenue. Si l’utilisateur soumet le formulaire avec une erreur de validation, les anciennes valeurs seront réaffichées.
- @error(‘title’) et @error(‘content’) :Ces directives permettent d’afficher les messages d’erreur associés à chaque champ spécifique si la validation échoue.
- @if( old(‘category’) === $category->id ) selected @endif :Cette ligne permet de pré-sélectionner la catégorie dans la liste déroulante si l’utilisateur a déjà sélectionné une catégorie lors de la soumission du formulaire avec une erreur. Cela garantit que la catégorie choisie par l’utilisateur reste sélectionnée après un échec de validation.
Résultats de validation et erreurs dans ArticleController
Lorsqu’une erreur de validation se produit, le message d’erreur associé à chaque champ est affiché dans un encadré rouge juste sous le champ correspondant. Par exemple :
- Si le titre dépasse 255 caractères ou est déjà pris, un message comme « Le titre est obligatoire. » ou « Le titre doit être unique. » apparaîtra sous le champ titre.
- Si le champ de contenu est vide, l’erreur « Le contenu est obligatoire. » sera affichée.
En ce qui concerne l’affichage de l’erreur indiquant que le titre doit être unique, nous avons déjà inséré un titre tel que « mon titre ». Lors de la tentative d’insertion une deuxième fois, voici l’erreur qui s’affiche :
- Si une catégorie invalide est sélectionnée, l’erreur « La catégorie doit exister. » sera affichée.
Pour tester ce cas, modifiez la valeur de la catégorie sélectionnée dans l’élément. Lorsqu’on inspecte le code, on remarque qu’il y a un identifiant qui n’existe pas, ce qui entraîne l’affichage de cette erreur :
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.
FAQ
Comment fonctionne la validation des données dans Laravel ?
Pourquoi est-il important de valider les données utilisateur ?
Quelles sont les règles de validation pour le champ 'title' ?
Comment gérer les erreurs de validation dans le formulaire ?
Comment pré-remplir les champs après une erreur de validation ?
Conclusion
En intégrant une validation rigoureuse des données, vous garantissez non seulement la sécurité de vos informations, mais vous améliorez également la qualité et la fiabilité de votre application. Quels autres aspects de Laravel souhaitez-vous explorer pour renforcer vos compétences ?