B3S
menu close

Laravel

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


きーぼう

更新日:2023/10/31



こんにちは、きーぼうです。

最近はCodeIgniterからLaravelにシステムを移行してました。
その際に独自のバリデーションルールをLaravelのカスタムバリデーションルールに移行した内容を共有します。

目次

カスタムバリデーションルールとは

Laravelが提供しているバリデーションルールとは別で、独自のルールを作成できるものです。
例:外部サービス経由で法人番号をチェックするバリデーションを行いたいときに利用する

実装方法

※FormRequestを利用した方法で説明します。

app/Rulesにファイルを作成

  1. app/Rules以下にファイルを新規追加
    • artisanコマンド or 直接ファイル作成
      • php artisan make:rule TestNoCheck
        ※コマンドの場合、Rulesディレクトリが存在しない場合は自動で作成してくれます。
      • ファイル作成のイメージ図

  2. passesメソッドにルールを記載
  3. passメソッドのイメージ図

  4. messageメソッドにエラーメッセージを記載
  5. messageメソッドのイメージ図

FormRequestクラスで上記ファイルを利用する

  1. useで利用するRuleファイルを定義
  2. rulesメソッドの中に、ルールを追加
  3. リクエスト処理のイメージ図

まとめ

  • バリデーションをコントローラーやサービスと切り離せたのはよかった。
  • バリデーションルール内では、リクエスト値も利用可能
    ※ルートパラメーターの値などは取得できないので注意が必要

参考資料

  • https://readouble.com/laravel/8.x/ja/validation.html
  • https://zakkuri.life/laravel-original-validation-rule/#google_vignette