From 7ad9916bcb7f6abaab563794bbb3c16ba1e28494 Mon Sep 17 00:00:00 2001 From: "Md. Al-Mosabbir Rakib" Date: Tue, 4 Nov 2025 22:47:57 +0600 Subject: [PATCH] Fix FormRequest passedValidation data sync issue When replace() or merge() methods are called in passedValidation(), the changes were not reflected in the validated() method because the validator instance held a copy of the original data. This fix syncs the validator's data with the current request data after passedValidation() is called, ensuring that any modifications made to the request data are properly reflected in validated(). Fixes #57659 --- src/Illuminate/Validation/ValidatesWhenResolvedTrait.php | 6 ++++++ tests/Foundation/FoundationFormRequestTest.php | 9 +++++++++ 2 files changed, 15 insertions(+) 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']);