ホームページ >PHPフレームワーク >Laravel >Laravelでカスタム検証ルールを作成して使用するにはどうすればよいですか?
Laravelでカスタム検証ルールを作成および使用するには、次の手順に従うことができます。
カスタムルールを定義します。
ルールオブジェクトを使用してカスタム検証ルールを定義できます。 Illuminate\Validation\Rules\Rule
を拡張する新しいクラスを作成します。たとえば、フィールドに特定の単語が含まれていることを検証したい場合は、 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>
カスタムルールを使用します。
コントローラーまたはフォームリクエストでカスタムルールを使用するには、ルールをインスタンス化してvalidate
メソッドに渡すことができます。
<code class="php">use App\Rules\ContainsWord; $request->validate([ 'title' => ['required', new ContainsWord('Laravel')], ]);</code>
フォームリクエストでカスタムルールを使用してください:
フォームリクエストを使用している場合は、 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>
Laravelでカスタム検証ルールを使用すると、いくつかの利点があります。
再利用性:
表現力:
特異性:
一貫性:
テスト可能性:
Laravelの検証システムを独自のカスタムルールで拡張するには、これらのアプローチに従うことができます。
ルールオブジェクトの使用:
Illuminate\Validation\Rules\Rule
を拡張するクラスを作成できます。これは、複雑なルールに適した方法です。閉鎖の使用:
簡単なルールについては、検証ルール内で閉鎖を定義できます。
<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>
拡張バリデーター:
Validator
Facadeを拡張して、アプリケーション全体で使用できる新しいルールを追加できます。
<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>
その後、検証でカスタムルールを使用できます。
<code class="php">$request->validate([ 'title' => 'required|contains_word:Laravel', ]);</code>
Laravelでカスタム検証ルールの実装に関する例とチュートリアルを見つけることができるいくつかのリソースがあります。
Laravelの公式文書:
ララキャスト:
Laravel News:
Github:
スタックオーバーフロー:
Laravelコミュニティブログ:
これらのリソースを活用することにより、Laravelでカスタム検証ルールを効果的に実装する方法をより深く理解することができます。
以上がLaravelでカスタム検証ルールを作成して使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。