From 1513e6f111b8014c398e46ab23f5dd43cdc9f22f Mon Sep 17 00:00:00 2001 From: Florian Raith Date: Mon, 10 Nov 2025 20:14:12 +0100 Subject: [PATCH 1/3] Revert lowercasing validation message placeholders --- .../Concerns/ReplacesAttributes.php | 2 +- tests/Validation/ValidationValidatorTest.php | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/Illuminate/Validation/Concerns/ReplacesAttributes.php b/src/Illuminate/Validation/Concerns/ReplacesAttributes.php index abd5ba154a5c..ef9bfaf6bca3 100644 --- a/src/Illuminate/Validation/Concerns/ReplacesAttributes.php +++ b/src/Illuminate/Validation/Concerns/ReplacesAttributes.php @@ -938,7 +938,7 @@ protected function replaceDoesntContain($message, $attribute, $rule, $parameters */ private function replaceWhileKeepingCase(string $message, array $mapping): string { - $fn = [Str::lower(...), Str::upper(...), Str::ucfirst(...)]; + $fn = [fn ($v) => $v, Str::upper(...), Str::ucfirst(...)]; $cases = array_reduce( array_keys($mapping), diff --git a/tests/Validation/ValidationValidatorTest.php b/tests/Validation/ValidationValidatorTest.php index b6ec5ac6722f..a475dbef16ba 100755 --- a/tests/Validation/ValidationValidatorTest.php +++ b/tests/Validation/ValidationValidatorTest.php @@ -18,6 +18,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Arr; use Illuminate\Support\Carbon; +use Illuminate\Support\Str; use Illuminate\Support\Stringable; use Illuminate\Translation\ArrayLoader; use Illuminate\Translation\Translator; @@ -639,6 +640,12 @@ public function testCapitalizedDisplayableValuesAreReplaced() $v->messages()->setFormat(':message'); $this->assertSame('The foo field must be accepted when BAR is AAA.', $v->messages()->first('foo')); + $trans = $this->getIlluminateArrayTranslator(); + $trans->addLines(['validation.accepted_if' => 'The :attribute field must be accepted when :other is :value.'], 'en'); + $v = new Validator($trans, ['foo' => 'no', 'bar' => 'aAa'], ['foo' => 'accepted_if:bar,aAa']); + $this->assertFalse($v->passes()); + $this->assertSame('The foo field must be accepted when bar is aAa.', $v->messages()->first('foo')); + // in_array $trans = $this->getIlluminateArrayTranslator(); $trans->addLines(['validation.in_array' => 'The value of :attribute does not exist in :Other.'], 'en'); @@ -715,6 +722,12 @@ public function testCapitalizedDisplayableValuesAreReplaced() $this->assertFalse($v->passes()); $this->assertSame('The last field is required unless FIRST is in TAYLOR, SVEN.', $v->messages()->first('last')); + $trans = $this->getIlluminateArrayTranslator(); + $trans->addLines(['validation.required_unless' => 'The :attribute field is required unless :other is in :values.'], 'en'); + $v = new Validator($trans, ['firstName' => 'dAyle', 'lastName' => ''], ['lastName' => 'RequiredUnless:firstName,tAylor,sVen']); + $this->assertFalse($v->passes()); + $this->assertSame('The last name field is required unless first name is in tAylor, sVen.', $v->messages()->first('lastName')); + // required_with $trans = $this->getIlluminateArrayTranslator(); $trans->addLines(['validation.required_with' => 'The :attribute field is required when :Values is present.'], 'en'); @@ -753,6 +766,12 @@ public function testCapitalizedDisplayableValuesAreReplaced() $v = new Validator($trans, ['url' => 'laravel.com'], ['url' => 'starts_with:http,https']); $this->assertFalse($v->passes()); $this->assertSame('The url must start with one of the following values HTTP, HTTPS', $v->messages()->first('url')); + + $trans = $this->getIlluminateArrayTranslator(); + $trans->addLines(['validation.starts_with' => 'The :attribute must start with one of the following values :values'], 'en'); + $v = new Validator($trans, ['url' => 'laravel.com'], ['url' => 'starts_with:hTtp,hTtps']); + $this->assertFalse($v->passes()); + $this->assertSame('The url must start with one of the following values hTtp, hTtps', $v->messages()->first('url')); } public function testInputIsReplacedByItsDisplayableValue() From e3e48f1c4650ea380ee901d3c2393ee93f6cd035 Mon Sep 17 00:00:00 2001 From: Florian Raith Date: Mon, 10 Nov 2025 20:47:10 +0100 Subject: [PATCH 2/3] Remove unused import --- tests/Integration/Validation/ValidatorTest.php | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/Integration/Validation/ValidatorTest.php b/tests/Integration/Validation/ValidatorTest.php index 9bbb8acda1ad..9854c3aa9091 100644 --- a/tests/Integration/Validation/ValidatorTest.php +++ b/tests/Integration/Validation/ValidatorTest.php @@ -5,7 +5,6 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -use Illuminate\Support\Str; use Illuminate\Tests\Integration\Database\DatabaseTestCase; use Illuminate\Translation\ArrayLoader; use Illuminate\Translation\Translator; From c62324374f9c1803b8a1bacaa777e9bb895fcc57 Mon Sep 17 00:00:00 2001 From: Florian Raith Date: Mon, 10 Nov 2025 20:53:18 +0100 Subject: [PATCH 3/3] Opened the wrong file and commited prematurely --- tests/Integration/Validation/ValidatorTest.php | 1 + tests/Validation/ValidationValidatorTest.php | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Integration/Validation/ValidatorTest.php b/tests/Integration/Validation/ValidatorTest.php index 9854c3aa9091..9bbb8acda1ad 100644 --- a/tests/Integration/Validation/ValidatorTest.php +++ b/tests/Integration/Validation/ValidatorTest.php @@ -5,6 +5,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; +use Illuminate\Support\Str; use Illuminate\Tests\Integration\Database\DatabaseTestCase; use Illuminate\Translation\ArrayLoader; use Illuminate\Translation\Translator; diff --git a/tests/Validation/ValidationValidatorTest.php b/tests/Validation/ValidationValidatorTest.php index a475dbef16ba..cc0df653d4d9 100755 --- a/tests/Validation/ValidationValidatorTest.php +++ b/tests/Validation/ValidationValidatorTest.php @@ -18,7 +18,6 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Arr; use Illuminate\Support\Carbon; -use Illuminate\Support\Str; use Illuminate\Support\Stringable; use Illuminate\Translation\ArrayLoader; use Illuminate\Translation\Translator;