La méthode recommandée pour écrire la logique de validation et d'autorisation consiste à placer cette logique dans des classes de demande distinctes. De cette façon, votre code de contrôleur restera propre.
Vous pouvez créer une classe de requête en exécutant php artisan make:request SomeRequest
.
Dans la rules()
méthode de chaque classe de requête, définissez vos règles de validation:
//SomeRequest.php
public function rules()
{
return [
"name" => [
'required',
'array', // input must be an array
'min:3' // there must be three members in the array
],
"name.*" => [
'required',
'string', // input must be of type string
'distinct', // members of the array must be unique
'min:3' // each string must have min 3 chars
]
];
}
Dans votre contrôleur, écrivez votre fonction d'itinéraire comme ceci:
// SomeController.php
public function store(SomeRequest $request)
{
// Request is already validated before reaching this point.
// Your controller logic goes here.
}
public function update(SomeRequest $request)
{
// It isn't uncommon for the same validation to be required
// in multiple places in the same controller. A request class
// can be beneficial in this way.
}
Chaque classe de demande est livrée avec des hooks / méthodes de pré et post-validation qui peuvent être personnalisés en fonction de la logique métier et des cas spéciaux afin de modifier le comportement normal de la classe de demande.
Vous pouvez créer des classes de requêtes parentes pour des types de requêtes similaires (par exemple web
et api
), puis encapsuler une logique de requête commune dans ces classes parentes.
$request->validate([...])
. Une exception sera déclenchée si les données échouent à la validation.