1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Laravelの条件に応じてバリデーションルールを追加するsometimes【個人的なお勉強アウトプット】

Last updated at Posted at 2022-03-25

参考図書

必要に応じてルールを追加したい場合、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で指定した項目に指定のルールを追加する。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?