Laravelでバリデーション

データを登録するときにそのデータが正しいデータかどうかを調べるためにバリデーションが必要です。今日は、LaravelのValidatorクラスを調べてみたいと思います。

Validatorクラス

1. Laravelでバリデーション処理を行うには、Validatorクラスのmakeメソッドを使います。makeメソッドは、第1引数に入力値、第2引数にバリデーションルールを指定します。

Validator::make(入力値,バリデーションルール)

2. 検証(バリデーション)の可否はfailsメソッドを使用します。failsメソッドは、検証NGの場合にtrueを、検証OKの場合はfalseを返します。

$val=Validator::make(入力値,ルール)
 //もし検証NGなら
 if($val->falis()){
 //エラーを返す
 return $val->errors;
 }

バリデーションルール

3. 下記にLaravelのバリデーションルールの一覧を表示します。

  • required
    言わずと知れた必須項目ですね。値が存在し、空文字列では無いことを検証します。
  • required_with:同時必須項目
    ある項目値が入力済みの場合、同時に入力されているかどうかを検証します。
  • alpha
    英文字だけで構成されていることを検証します。
  • alpha_num
    英数字(英文字+数字)で構成されていることを検証します。
  • alpha_dash
    英数字+ダッシュ+アンダーバーで構成されていることを検証します。
  • size:整数値
    与えられた文字数又は、数字項目の場合はその値かどうかを検証します。
  • between:最小値,最大値
    サイズが最小値と最大値の範囲内であることを検証します。※最小値と最大値も含めます。
  • min:最小値
    与えられたサイズ(最小値)以上であるかどうかを検証します。
  • max:最大値
    与えられたサイズ(最大値)以下であるかどうかを検証します。
  • numeric
    数字であるかどうかを検証します。
  • integer
    整数かどうかを検証します。
  • in:リスト1,リスト2,リスト3
    リストの値の中にあるかどうかを検証します。
  • not_in:リスト1,リスト2,リスト3
    リストの中に無いことを検証します。
  • confirmed
    配列の中に項目名_confirmation項目が存在し、その値と一致しているかどうかを検証します。
  • accepted
    項目の値が、yesあるいは1であるかどうかを検証します。
  • same:確認項目
    項目値が確認項目の値と一致するかどうかを検証します。
  • different::確認項目
    項目値が確認項目の値と一致しないかどうかを検証します。
  • match:正規表現
    与えられた正規表現と一致するかどうかを検証します。
  • unique:テーブル名,フィールド名
    指定したテーブルフィールドがuniqueかどうかを検証します(第1引数にテーブル名、第2引数にフィールド名を指定します)。※IDを指定し、uniqueルールを無視するように強制することも出来ます。
  • exists:テーブル名,フィールド名
    指定したテーブルフィールドの値が存在しているかどうかを検証します(第1引数にテーブル名、第2引数にフィールド名を指定します)。
  • before:日付
    指定日付以前であるかどうかを検証します。
  • after:日付
    指定日付以降であるかどうかを検証します。
  • email
    正しいメールアドレスかどうかを検証します。
  • url
    有効なURLであるかどうかを検証します。
  • active_url
    アクティブなURLであるかどうかを検証します。
  • mimes:ファイルの拡張子
    アップロードファイルが指定したMIMEタイプであるかどうかを検証します。
  • image
    アップロードファイルが画像であるかどうかを検証します。
  • image|max:サイズ
    アップロードファイルが指定サイズ(キロバイト)より小さいかどうかを検証します。

 エラーメッセージの取得方法

4. Laravelでエラーメッセージを取得するには、Validatorクラスのpasseseメソッドかfailsメソッドを呼び出した後に、errorsプロパティでアクセスすることが出来ます。

5. メッセージを取得する為のいくつかのメソッドを下記に記述しておきます。

  • $errors->has(項目名)
    指定した項目にエラーメッセージがあるかどうかを確認します。エラーメッセージがあればtrue、無ければfalseを返します。
  • $erros->first(項目名)
    指定した項目名の最初のエラーメッセージを取得します。第2引数に:messageプレースホルダーを使って、フォーマットを指定できます。
  • $errors->get(項目名)
    指定した項目名の全てのエラーメッセージを取得します。上記同様第2引数にフォーマットを指定できます。
  • $errors->all()
    全ての項目名の全てのエラーメッセージを取得します。 第1引数にフォーマットを指定できます。

カスタムエラーメッセージ

6. Validatorクラスのmakeメソッドの第3引数にカスタムメッセージの配列を渡すことで、カスタムエラーメッセージ(自分専用のエラーメッセージ)を作成することが出来ます。

7. カスタムエラーメッセージを作成するときに使用できるプレースホルダーは:attribute、:other、:size、:min、:max、:value等が使えます。

8. Laravelはカスタムバリデーションルールも簡単に作成出来るみたいです。只、デフォルトで用意されているバリデーションでほとんど事足りるので、カスタムバリデーションルールに関しては、後日余裕が出来たときに調べたいと思います。

次回は、実践編『入力ページのバリデーション処理』でバリデーション処理を行ってみたいと思います。

本日は以上です。

このエントリーを含むはてなブックマーク Buzzurlにブックマーク livedoorクリップ Yahoo!ブックマークに登録

トラックバック&コメント

この投稿のトラックバックURL:

トラックバック

コメント

  1. HiroKws より:

    少し、ヒントを追加します。

    fails()の全く逆として働くpasses()というメソッドもあります。開発者の好みで使い分けてもらえます。

    uniqueとexistsは私のお気に入りです。両方共にデータベースのフィールド(カラム・属性)をチェックしてくれるものです。ですから、引数は同じように指定できます。最初の引数はデータベースのテーブル名です。多分、「テーブル名」にしたほうがわかりやすいでしょう。

    • nakada より:

      いつも貴重な情報ありがとうございます。
      uniqueとexistsは修正しておきました。私のドキュメントの読み間違いでした。
      今回はドキュメントの情報を私なりに整理しただけですので、実際に使用したことの無いバリデーションルールがたくさんあります。
      これからもご指導よろしくお願いします。
      WinRoad徒然草管理人 中田


コメントをどうぞ

このページの先頭へ