La validation des données est cruciale pour assurer l’intégrité de votre application.
Valider les données directement dans les contrôleurs peut rendre le code désordonné et difficile à maintenir.
L’utilisation de la Form Request dans Laravel permet de centraliser la logique de validation, rendant le code plus propre et organisé.
Initiez-vous à Laravel et réalisez votre première application en toute confiance.
La validation des données est une étape essentielle pour garantir l’intégrité et la fiabilité de votre application. Bien que vous puissiez valider les données directement dans vos contrôleurs, l’utilisation d’une Form Request permet de rendre votre code plus propre, organisé et maintenable. Dans cet axe, nous allons apprendre à créer et à utiliser une Form Request pour centraliser la logique de validation.
Créer une Form Request Laravel
Pour commencer, exécutez la commande artisan suivante pour générer une Form Request nommée ArticleRequest :
php artisan make:request ArticleRequest
Cette commande va créer un fichier ArticleRequest.php dans le dossier app/Http/Requests.
Implémenter la validation des données
Voici le contenu de la classe ArticleRequest avec des explications détaillées sur son fonctionnement :
$this->method() == 'POST' ?
['required', 'max:20', 'unique:articles,title'] :
['required', 'max:20', Rule::unique('articles', 'title')->ignore($this->article)],
'content' => ['required'],
'category' => ['sometimes', 'nullable', 'exists:categories,id'],
];
}
public function attributes()
{
return [
'title' => 'super titre',
];
}
public function messages()
{
return [
'title.required' => 'Et le titre ?',
'content.required' => 'T\'as pas oublié un truc?',
];
}
}
Explication des différentes méthodes
- authorize() :Cette méthode détermine si l’utilisateur est autorisé à utiliser cette Form Request. En retournant true, vous permettez l’accès à tous les utilisateurs. Pour des cas spécifiques, vous pouvez inclure des règles de vérification d’autorisation.
- rules() :Cette méthode contient les règles de validation qui s’appliquent. Nous avons utilisé ici une logique conditionnelle pour adapter la validation en fonction de la méthode HTTP (POST pour la création et PUT/PATCH pour la mise à jour).title: Doit être unique et ne pas dépasser 20 caractères. Lors de la mise à jour, nous ignorons l’ID de l’article actuel grâce à Rule::unique()->ignore().content: Champ requis.category: Champ optionnel qui doit exister dans la table categories.
- attributes() :Personnalise les noms des champs dans les messages d’erreur. Ici, title sera affiché comme « super titre » dans les messages.
- messages() :Contient les messages d’erreur personnalisés. Par exemple, si le champ title est manquant, le message « Et le titre ? » sera affiché.
Utiliser Form Request dans contrôleurs
Pour utiliser la Form Request , modifiez la méthode store de votre ArticleController :
use App\Http\Requests\ArticleRequest;
public function store(ArticleRequest $request)
{
$validatedData = $request->validated(); // Valide automatiquement les données selon la Form Request
$validatedData['category_id'] = request('category', null);
Auth::user()->articles()->create($validatedData);
$success = 'Article ajouté';
return back()->withSuccess($success);
}
- $request->validated() :Cette méthode retourne uniquement les données validées, ce qui simplifie le code en évitant de devoir gérer manuellement la validation.
- Auth ::user()->articles()->create(): Crée un nouvel article en associant automatiquement l’utilisateur authentifié, grâce au mass assignment.
Avantages de l’utilisation des Form Requests
- Organisation du code :Les règles de validation sont séparées des contrôleurs, rendant le code plus clair et plus facile à maintenir.
- Personnalisation accrue :Permet de centraliser et de gérer facilement les messages d’erreur et les noms d’attributs.
- Réutilisabilité :La même Form Request peut être réutilisée dans plusieurs méthodes d’un contrôleur ou dans différents contrôleurs.
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 créer une Form Request dans Laravel ?
Quels sont les avantages d'utiliser une Form Request ?
Comment implémenter une Form Request dans le contrôleur ?
Comment personnaliser les messages d'erreur dans une Form Request ?
Comment gérer l'autorisation avec une Form Request ?
Conclusion
En centralisant vos validations avec des Form Requests, vous gagnez en clarté et maintenabilité. Comment envisagez-vous d’optimiser vos validations pour améliorer l’intégrité de vos applications Laravel ?