diff --git a/src/Illuminate/Validation/ValidatesWhenResolvedTrait.php b/src/Illuminate/Validation/ValidatesWhenResolvedTrait.php index 596585551d22..33abc382ea42 100644 --- a/src/Illuminate/Validation/ValidatesWhenResolvedTrait.php +++ b/src/Illuminate/Validation/ValidatesWhenResolvedTrait.php @@ -33,6 +33,12 @@ public function validateResolved() } $this->passedValidation(); + + // Sync the validator data with the current request data after passedValidation() + // in case the request data was modified (e.g., via replace() or merge()) + if (method_exists($this, 'validationData')) { + $instance->setData($this->validationData()); + } } /** diff --git a/tests/Foundation/FoundationFormRequestTest.php b/tests/Foundation/FoundationFormRequestTest.php index 8827b8f92f66..9b5c5505b2c5 100644 --- a/tests/Foundation/FoundationFormRequestTest.php +++ b/tests/Foundation/FoundationFormRequestTest.php @@ -129,6 +129,15 @@ public function testAfterValidationRunsAfterValidation() $this->assertEquals(['name' => 'Adam'], $request->all()); } + public function testPassedValidationDataIsReflectedInValidatedMethod() + { + $request = $this->createRequest([], FoundationTestFormRequestHooks::class); + + $request->validateResolved(); + + $this->assertEquals(['name' => 'Adam'], $request->validated()); + } + public function testValidatedMethodReturnsOnlyRequestedValidatedData() { $request = $this->createRequest(['name' => 'specified', 'with' => 'extras']);