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()
入力値AliceAliceAlice
バリデーション前の値BobAliceAlice
バリデーションされる値BobBobAlice
バリデーション後の値BobAliceBob