Pour créer et utiliser des règles de validation personnalisées dans Laravel, vous pouvez suivre ces étapes:
Définissez la règle personnalisée:
Vous pouvez définir une règle de validation personnalisée à l'aide d'un objet de règle. Créez une nouvelle classe qui étend Illuminate\Validation\Rules\Rule
. Par exemple, si vous souhaitez valider qu'un champ contient un mot spécifique, vous pouvez créer une classe nommée ContainsWord
.
<code class="php">use Illuminate\Contracts\Validation\Rule; class ContainsWord implements Rule { private $word; public function __construct($word) { $this->word = $word; } public function passes($attribute, $value) { return stripos($value, $this->word) !== false; } public function message() { return "The :attribute must contain the word :word."; } }</code>
Utilisez la règle personnalisée:
Pour utiliser la règle personnalisée dans votre contrôleur ou votre demande de formulaire, vous pouvez instancier la règle et la transmettre à la méthode validate
.
<code class="php">use App\Rules\ContainsWord; $request->validate([ 'title' => ['required', new ContainsWord('Laravel')], ]);</code>
Utilisation de la règle personnalisée dans la demande de formulaire:
Si vous utilisez des demandes de formulaire, vous pouvez inclure la règle dans la méthode rules
.
<code class="php">use App\Rules\ContainsWord; use Illuminate\Foundation\Http\FormRequest; class StorePostRequest extends FormRequest { public function rules() { return [ 'title' => ['required', new ContainsWord('Laravel')], ]; } }</code>
L'utilisation de règles de validation personnalisées dans Laravel offre plusieurs avantages:
Réutilisabilité:
Expressivité:
Spécificité:
Cohérence:
Testabilité:
Pour étendre le système de validation de Laravel avec vos propres règles personnalisées, vous pouvez suivre ces approches:
Utilisation d'objets de règle:
Illuminate\Validation\Rules\Rule
. Il s'agit de la méthode préférée pour les règles complexes.Utilisation des fermetures:
Pour des règles simples, vous pouvez définir une fermeture dans vos règles de validation.
<code class="php">$request->validate([ 'title' => [ 'required', function ($attribute, $value, $fail) { if (stripos($value, 'Laravel') === false) { $fail('The '.$attribute.' must contain the word "Laravel".'); } }, ], ]);</code>
VALIDATEUR D'EXTENSION:
Vous pouvez étendre la façade Validator
pour ajouter de nouvelles règles qui peuvent être utilisées dans votre application.
<code class="php">use Illuminate\Support\Facades\Validator; Validator::extend('contains_word', function ($attribute, $value, $parameters, $validator) { $word = $parameters[0]; return stripos($value, $word) !== false; }); Validator::replacer('contains_word', function ($message, $attribute, $rule, $parameters) { return str_replace(':word', $parameters[0], $message); });</code>
Vous pouvez ensuite utiliser la règle personnalisée dans votre validation.
<code class="php">$request->validate([ 'title' => 'required|contains_word:Laravel', ]);</code>
Il existe plusieurs ressources où vous pouvez trouver des exemples et des tutoriels sur la mise en œuvre des règles de validation personnalisées dans Laravel:
Documentation officielle de Laravel:
Laracasts:
Laravel News:
Github:
Débordement de pile:
Blogs de la communauté Laravel:
En tirant parti de ces ressources, vous pouvez mieux comprendre comment mettre en œuvre efficacement les règles de validation personnalisées dans Laravel.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!