参考図書
必要に応じてルールを追加したい場合、Validatorクラスの「sometimes」というメソッドを利用できる。
$validator->sometimes(項目名,ルール名,クロージャ)
クロージャは以下の形
function($input){
...処理を実行
return 真偽値;
}
引数$input
には、入力された値をまとめたものが渡される。
$input->name
としてフォームの値を取り出せる。
戻り地は、ルールを追加すべきかどうかを指定する真偽値。
trueの場合、sometimesで指定したルールを指定の項目に追加する。
app/Http/Contorllers/HelloController.php
public function post(Request $request){
$rule = [
'項目名' => 'ルール名'
];
$messages = [
'項目名.ルール名' => 'メッセージ内容'
];
$validator = Validator::make($requset->all(),$rules,$messages);
$validator->sometimes('age', 'min:0', function($input){
return is_numeric($input->age);
});
$validator->sometimes('age', 'max:200', function($input){
return is_numeric($input->age);
});
if($validator->fails()){
return redirect('/hello')
->withErrors($validator)
->withInput();
}
return view('hello.index', ['msg'=>'正しく入力されました!'])
}
入力されたageの値がis_numeric
つまり数字のとき、sometimesで指定した項目に指定のルールを追加する。