LaravelのValidatorのsometimesメソッド
Laravelのvalidatorのsometimesメソッドに関する質問です。
Laravelの入門書で勉強しているのですが、その本では「sometimes
メソッドの第三引数のクロージャーの戻り値がfalse
の場合は、sometimes
で指定したルールを指定の項目に追加する」と書かれています。
公式ドキュメントには「true
であれば、ルールを追加する」と書かれており、矛盾しているように思います。
入門書に書かれているコードは以下になります。
確かに、以下のコードでは$input->age
が整数のとき、すなわち!is_int($input->age)
がfalse
のときに、max:200
やmin:0
のルールが追加された挙動を示していました。
しかしながら、公式ドキュメントのコードを書いた場合は、クロージャーがtrue
を返したときにルールが追加されていました。
どこか勘違いしている箇所ありますでしょうか?
入門書のコード
php
1<?php 2public function post(Request $request) 3{ 4 $validate_rule = [ 5 'name' => 'required', 6 'mail' => 'email', 7 'age' => 'numeric', 8 'games' => 'required|numeric', 9 ]; 10 11 $messages = [ 12 'name.required' => '名前は必ず入れてください。', 13 'mail.email' => 'メールアドレスが必要です', 14 'age.numeric' => '年齢を整数で記入してください', 15 'age.max' => '年齢は200歳以下で入力してください', 16 'age.min' => '年齢は0歳以上で入力してください', 17 ]; 18 19 $validator = Validator::make($request->all(), $validate_rule, $messages); 20 21 $validator->sometimes('age', 'min:0', function($input) { 22 return !is_int($input->age); 23 }); 24 25 $validator->sometimes('age', 'max:200', function($input) { 26 return !is_int($input->age); 27 }); 28 29 if ($validator->fails()) { 30 return redirect('/hello')->withErrors($validator)->withInput(); 31 } 32 33 $data = ['msg' => '正しく入力されました。']; 34 35 return view('hello.index', $data); 36 } 37 38 39$validator = Validator::make($request->all(), $rules, $messages); 40
公式ドキュメントのコード
php
1<?php 2$v = Validator::make($data, [ 3 'email' => 'required|email', 4 'games' => 'required|numeric', 5]); 6 7$v->sometimes('reason', 'required|max:500', function ($input) { 8 return $input->games >= 100; 9});



回答1件
あなたの回答
tips
プレビュー