
Laravel
【Laravel】カスタムバリデーションルールを利用してみた

きーぼう
更新日:2023/10/31
こんにちは、きーぼうです。
最近はCodeIgniterからLaravelにシステムを移行してました。
その際に独自のバリデーションルールをLaravelのカスタムバリデーションルールに移行した内容を共有します。
目次
カスタムバリデーションルールとは
Laravelが提供しているバリデーションルールとは別で、独自のルールを作成できるものです。
例:外部サービス経由で法人番号をチェックするバリデーションを行いたいときに利用する
実装方法
※FormRequestを利用した方法で説明します。
app/Rulesにファイルを作成
- app/Rules以下にファイルを新規追加
- artisanコマンド or 直接ファイル作成
php artisan make:rule TestNoCheck
※コマンドの場合、Rulesディレクトリが存在しない場合は自動で作成してくれます。
- artisanコマンド or 直接ファイル作成
- passesメソッドにルールを記載
- messageメソッドにエラーメッセージを記載
FormRequestクラスで上記ファイルを利用する
- useで利用するRuleファイルを定義
- rulesメソッドの中に、ルールを追加
まとめ
- バリデーションをコントローラーやサービスと切り離せたのはよかった。
- バリデーションルール内では、リクエスト値も利用可能
※ルートパラメーターの値などは取得できないので注意が必要
参考資料
- https://readouble.com/laravel/8.x/ja/validation.html
- https://zakkuri.life/laravel-original-validation-rule/#google_vignette