WinRoadのLaravel4初心者講座

次世代PHPフレームワークのLaravel4を初心者向けに解説して参ります。

Winroad徒然草の管理人がお届けします
バリデーション

バリデーション

このエントリーをはてなブックマークに追加

バリデーションとは、検証(する)、認証(する)、認可(する)、妥当性確認、等の意味を持つ英単語で、プログラミングの中で、受け取った値の整合性を調べるために、重要な役割を担っています。

Validator::make(データ,ルール)

Validator::makeメソッドで、バリデーション処理を行います。Laravel4では、次のような簡単な工程で、バリデーションを行うことが出来るValidatorクラスが用意されています。

  1. makeメソッドの第1引数に検証したいデータの配列、第2引数にバリデーションルールの配列を渡して、バリデーションをインスタンス化します。
  2. failseメソッド、または、passesメソッドで、チェックを行います。
  3. 上記のチェックに基づいて、NGならエラーメッセージを取得して、元のページへリダイレクトします。

それでは、実際にバリデーションを行ってみましょう。

基本例

//POSTデータの受信
 $inputs['username']=Input::get['username'];
 $inputs['email']=Input::get['email'];
 //バリデーションルールの作成
 $rules=array(
 'username'=>'required|max:30',
 'email'=>'required|email',
 );
 //バリデーションのインスタンス化
 $val=Validator::make($inputs,$rules);
 //バリデーションOKなら
 if($val->passes()){
 $user=new User();
 $user->username=Inputs['username'];
 $user->email=Inputs['email'];
 $user->save();
 return Redirect::to('/');
 } //バリデーションNGなら
 return Redirect::back()
 ->withErrors($val)
 ->withInput();
 }

上記のバリデーションエラーは、$errors->first(フィールド名)で、最初の一つだけを取得するか、$errors->get(フィールド名)で、そのフィールドの全エラーメッセージを取得することが出来ます。尚、全フィールドの全エラーメッセージを取得するには、$errosr->all()メソッドを使用します。

バリデーションルールの一覧

  • accepted
    フィールドがyes,on,または、1であるかどうかを検証します。これは、『利用規約』等の同意のバリデーションなどに便利です。
  • active_url
    フィールドが有効なURLであるかどうかを検証します。
  • after:日付
    フィールドが引数の日付以降であるかどうかを検証します。日付はPHPのstrtotime関数で検証します。
  • alpha
    フィールドが全てアルファベットであるかどうかを検証します。
  • alpha_dash
    フィールドが全部アルファベット及びダッシュ(-)、下線(_)であるかどうかを検証します。
  • alpha_num
    フィールドが全部英数字であるかどうかを検証します。
  • before:日付
    フォールドが引数の日付より前であるかどうかを検証します。日付はPHPのstrtotime関数で検証されます。
  • between:最小値,最大値
    フィールドが最小値と最大値の間のサイズであるかどうかを検証します。指定した値は、検証対象のフィールドが文字列の場合は、文字長で、数値の場合は、整数値と判断します。ファイルの場合は、キロバイトのサイズです。
  • confirmed
    フィールドがそのフィールド名+_confirmationフィールドの同じ値であるかどうかを検証します。このルールを使うには、フィールドに検証するフィールド名+confirmationフィールドが存在している必要があります。
  • date
    PHP関数のstrtotimeの値として正しいかどうかを検証します。
  • date_format:フォーマット
    フィールドは、引数で指定したフォーマットと一致するかどうかを検証します。
  • different:フィールド
    フィールドが引数で指定したフィールドと異なった値かどうかを検証します。
  • email
    フィールドがメールアドレス形式として正しいかどうかを検証します。
  • exists:テーブル,カラム
    フィールドが第1引数のテーブルに第2引数のカラム名として存在するかどうかを検証します。尚、第2引数のカラム名を省略した場合、フィールド名と同じ名前のカラムが存在するかどうかを検証します。
  • image
    フィールドが画像(jpg,png,bmp,gif)であるかどうかを検証します。
  • in:フィールド1,フィールド2,…..
    フィールドが指定した引数の中に含まれているかどうかを検証します。
  • integer
    フィールドが整数値であるかどうかを検証します。
  • ip
    フィールドがIPアドレスとして正しいかどうかを検証します。
  • max:値
    フィールドが引数で指定した値より小さいかどうかを検証します。指定した値は、検証対象のフィールドが文字列の場合は、文字長で、数値の場合は、整数値と判断します。ファイルの場合は、キロバイトのサイズです。
  • mimes:拡張子1,拡張子2,….
    フィールドが引数で指定した拡張子のリストのMIMEタイプのどれかと一致するかどうかを検証します。
  • min:値
    フィールドが引数の値よりも大きいかどうかを検証します。指定した値は、検証対象のフィールドが文字列の場合は、文字長で、数値の場合は、整数値と判断します。ファイルの場合は、キロバイトのサイズです。
  • not_in:フィールド1,フィールド2,….
    フィールドが引数の値の中に含まれていないかどうかを検証します。含まれていない場合はtrueを返します。
  • numeric
    フィールドが数値であるかどうかを検証します。
  • regex:正規表現
  • required
    フィールドの値が存在するかどうか(必須項目)を検証します。
  • required_if:フィールド,値
  • required_with:フィールド1,フィールド2,….
  • same:フィールド
    フィールドが指定したフィールドと同じ値であるかどうかを検証します。
  • size:値
    フィールドが指定した値と同じサイズかどうかを検証します。指定した値は、検証対象のフィールドが文字列の場合は、文字長で、数値の場合は、整数値と判断します。ファイルの場合は、キロバイトのサイズです。
  • unique:テーブル,カラム,除外ID,IDカラム
    フィールドは指定されたテーブルで、一意であるかどうかを検証します。第2引数のカラム名を省略した場合は、フィールド名と同じであると認識されます。
    ‘email’=>’unique:users’
    上記は、usersテーブルのemailフィールドが一意であるかどうかを検証します。
    第3引数は、指定したIDを除外して検証します。
    ‘email’=>’unique:users,email_address,10’
    上記は、usersテーブルのidが10以外のemail_addressが一意であるかどうかを検証します。

« »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です