Laravelのフォームリクエストでバリデーション前後にデータを加工する方法
Published:
prepareForValidation()
バリデーションする前に実行されます。 以下のようにリクエストデータを加工することが出来ます。
protected function prepareForValidation()
{
$this->replace(['name' => 'Bob'])
}
validationData()
ここでreturnしたものが実際にバリデーションで使用されるデータになります。
元々は以下の通り all() をreturnしてるだけです。
public function validationData()
{
return $this->all();
}
returnするデータを加工すればその値でバリデーションされます。
public function validationData(){
$data = $this->all();
$data['name'] = 'Bob';
return $data;
}
passedValidation()
5.8.33から追加。バリデーションに成功した後に実行されます。 以下のようにリクエストデータを加工することが出来ます。
protected function passedValidation()
{
$this->replace(['name' => 'Bob'])
}
各段階での値の状態
| 場所 | prepareForValidation() | validationData() | passedValidation() |
|---|---|---|---|
| 入力値 | Alice | Alice | Alice |
| バリデーション前の値 | Bob | Alice | Alice |
| バリデーションされる値 | Bob | Bob | Alice |
| バリデーション後の値 | Bob | Alice | Bob |