Laravelのバリデーションをカスタマイズする方法【カスタムバリデーション】

Laravelのバリデーション方法とカスタマイズ方法を紹介します。

・バージョン

Laravel : 5.7

LaravelのバリデーションはFormRequestクラスを継承して実装します。

・App\Http\Requests\HogesRequest.php

一番上のメソッドであるauthorizeでは、リクエストに対する権限を設定します。例えば、現在ログイン中のユーザに権限がない場合「false」を返します。

 

Laravelのバリデーションをカスタマイズする方法

独自でバリデーションをカスタマイズする場合は、Ruleを継承して実装します。

今回は例として、hogeテーブルのIDが存在しているかをチェックするカスタムバリデーションを実装します。

以下のコマンドを実行することで、カスタムバリデーションのファイルがApp/Rules配下に自動生成されます。

・App\Rules\CheckId.php

 

ちなみにRuleの中身はこんな感じ。

・Illuminate\Contracts\Validation\Rule.php

 

あとは以下のように追加すればカスタム完了。

カスタムバリデーションを使うために以下を追記します。

そして使用するカスタムバリデーションのインスタンスを生成します。

 

Laravelのバリデーションを実行する方法

バリデーション定義が終わったら後は簡単。

登録や更新処理などでバリデートしたいリクエストに対して、コントローラのメソッドの引数に使用するバリデーションを追加するだけ。

viewからコントローラにリクエストをsubmitする際に勝手にバリデートしてくれます。

 

Laravelのバリデーションエラーをviewで表示する方法

viewにエラーメッセージを表示したい場合は、表示したい箇所で以下のように追加すればおけです。

 

以上、laravelでカスタムバリデーションを実装する方法でした。

参考:Laravel 5.5 バリデーション