Laravelのカスタムバリデーションルールを追加する

laravel-custom-validation-rule
  • URLをコピーしました!

Laravelでは追加する必要のないくらい豊富なバリデーションルールが用意されています。
しかし、特に日本においてそれだけでは不十分な場合も多々あり、独自のバリデーションルールを追加したいことがあります。
そこで、Laravelのマニュアルで紹介されているを方法を単純に用いるのではなく、より使いやすくしたカスタムバリデーションルールをご紹介します。

目次

ルールオブジェクトの問題点

マニュアルでは、

を実行してapp/Rulesディレクトリにルールオブジェクトを作成し、
バリデーション時にnewして利用する方法が紹介されていますが、

この方法ではFormRequest内で利用することができませんでした。

あわせて読みたい

そこで、ルールオブジェクトの下に記載されている「拡張の使用」を参考に追加していきます。

ServiceProviderを使う

まずは、ServiceProviderカスタムバリデーションルールを作ります。

ServiceProviderの作成

マニュアルでは、AppServiceProviderに記載していますが、バリデーション用に処理を分けたいので新しく作ります。

次に、config/app.phpproviders配列に上記で作成したものを追加します。

カスタムバリデーションルールの作成

作成したValidationServiceProviderboot()メソッドに判定処理を追加します。

Validator::extend()第1引数ルール名をば。
$valueにフォームで入力した内容が入ってくるので、それを使用して判定します。
日本では、ひらがな、カタカナ、郵便番号、電話番号などを正規表現で判定するルールなどが欲しいところですね。

カスタムバリデーションルールの利用

最後に、作成したカスタムバリデーションルールFormRequestに追加しましょう。

FormRequestの作成

まずは、App/Http/RequestsFormRequestを作成します。

そして、FormRequestrules()メソッド内で、作成したカスタムバリデーションルール名(この場合は”uppercase“)を記載することで利用できます。

Controllerに追加

Controller側では上記で作成したFormRequestuseして、

下記のように引数に指定してあげればOK!

引数に指定するだけでバリデーション済みのリクエストが送られてくるので、コントローラ側で入力チェックをする必要はありません!
なんて便利!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次