(Laravel) sometimesでのバリデーション方法

laravel-somtimes-validation

 

本記事では、laravelでのバリデーションで使える、
sometimesメソッドを使ったバリデーションの仕方について解説をしていく。

 

(laravel) sometimesメソッドとは

laravelのバリデーションで使えるsometimesとは、
Validatorクラスの、sometimesメソッドのこと。

sometimeメソッドを使うと、
フォームから送られてきた値に対して条件にあった場合のみ、リデーションを実行でき、より柔軟にバリデーションを実行できるメリットがある。

 

(laravel) sometimesメソッドとは
  • Validatorクラスの、sometimesメソッドのこと。
  • フォームから送られてきた値に対して条件にあった場合のみ、リデーションを実行でき、より柔軟にバリデーションを実行できるメリットがある。

 

 

(laravel) sometimesメソッドの使い方

次に、sometimesメソッドの使い方を解説していく。

 

sometimesメソッドの書式

sometimesメソッドの書式は下記。

# sometimesメソッドの書式

$Validatorクラスのインスタンス->sometimes( 項目名, ルール名, function($input){

     //処理を記述
     //処理結果の戻り値がfalseなら
     //項目名に対して、ルール名でバリデーションを行う

     return bool
});

 

第3引数にしたクロージャの戻り値がfalseだった場合にのみ、
第2引数に指定したバリデーションルールが、
第1引数に指定した項目名に対して、実行される。
クロージャの結果がtrueの場合は何もしない。

クロージャに引数として渡される$inputは、
Illuminate\Support\Fluentのインスタンスで、
フィールドと入力値にアクセスするためのオブジェクト、らしい。

つまり何が言いたいかというと、
$inputには、フォームからの入力値が入っているから、
$inputから入力値を取り出すなどして、その値によって、
後続のバリデーションをするかしないかを判断しようってこと。

 

$inputからの値の取り出し方は下記

$value = $input->フォームのname属性;

 

sometimesの使い方の例

説明が長くなったが、下記sometimesを使ったバリデーションの例。
コントローラのアクションにて実行。

public function post(Request $request)
{
     $rules = [
          'age' => 'numeric',
     ];

     $messages = [
          'age.min' => '年齢は0歳以上で入力してください',
     ];

     //バリデータクラスのインスタンスを作成
     $validator = Validator::make($request->all(), rules, $messages);

     //フォームの入力値が整数だった場合、ageがmin:0であるかのバリデーションを実行 
     $validator->sometimes('age', 'min:0', function($input){
          return !is_int($input->age); 
     }

     if (validator-fails()) {
          //ageがmin:0でなかった場合の処理
     }

     //ageがmin:0だった場合の処理
     return view('hoge.index', ['msg'=>'入力値OK'];
}

 

関連記事

laravel-validation-outof-controller
laravel-validation

 

http://laravel.jp/

https://readouble.com/laravel/5.5/ja/validation.html

 

記事が気に入った方はシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。