laravel5.6, 5.7 独自のバリデーションルールを追加しよう!

laravel5.6, 5.7 独自のバリデーションルールを追加しよう!

前回までの記事で、Formリクエストを使用してリクエストを個別化する方法やバリデーションメッセージの編集などを行ってきました。

 

今回の記事では独自のバリデーションルールを追加して、バリデーション機能をさらにカスタマイズしましょう!

 

前回までのバリデーション記事でもmembersテーブルを使用していたので、今回もこちらのテーブルを使用します。

今回は名前を入れる欄があるので、かなを入れる欄を追加しましょう。

bladeを編集します。

 

準備ができました。それではバリデーションルールを記述しましょう。今回のバリデーションルールはひらがな入力か否かですので正規表現 /[^ぁ-んー]/u にマッチするか確認します。

 

クロージャを使用する

MembersRequest.php(作成したFormRequestクラスです)

前回までの記事で、Formリクエストを既に作成していますので、このクロージャはMembersRequest.phpに記述していますが、もちろんコントローラーにも直接記述可能です。サイト全体の中で、一度しか使用しないルールなどはこちらで記述するといいと思います。

 

Ruleオブジェクトを作成する

artisanから新規にRuleオブジェクトを作成して、呼び出すことも可能です。

App/Rules/kana.php

MembersRequest.php

Ruleオブジェクトを使用する場合は、コントローラーまたはFormRquestでRuleオブジェクトを呼び出します。

messageメソッドでエラーメッセージを記述。もちろん言語ファイルに記述した文章も使用できます。

 

クロージャ、Ruleオブジェクトを使用する場合、|でバリデーションルールを記述出来ませんので注意してください。

 

サービスプロバイダーに登録する

サイト中、何度も使用するルールの場合はサービスプロバイダに記述し、|記法を使用できるようにしましょう。

App/Providers/KanaServiceProvider.php

config/app.php

これで|記法を使用できます。

MembersRequest.php

ですがこのままですと、バリデーションメッセージが設定されていません。

ので、言語ファイルにバリデーションメッセージを追加しましょう。

resource/lang/ja/validation.php

 

以上、3種類のカスタムバリデーションルールを追加する方法でした。

ここまで出来ればほとんどの状況に対応できるようになるはずです。サイトに合わせて色々改造していく方法を探していくのって楽しいですね!

 

Laravelカテゴリの最新記事