diff --git a/src/Illuminate/Validation/Validator.php b/src/Illuminate/Validation/Validator.php index 6c034b4a3d2c..7a394f089567 100755 --- a/src/Illuminate/Validation/Validator.php +++ b/src/Illuminate/Validation/Validator.php @@ -1242,6 +1242,12 @@ public function setRules(array $rules) */ public function appendRules(array $rules) { + $rules = (new Collection($rules)) + ->map(function ($value) { + return is_string($value) ? explode('|', $value) : $value; + }) + ->all(); + return $this->setRules(array_merge_recursive($this->getRulesWithoutPlaceholders(), $rules)); } diff --git a/tests/Validation/ValidationValidatorTest.php b/tests/Validation/ValidationValidatorTest.php index 9b67edf553b2..74d067737f76 100755 --- a/tests/Validation/ValidationValidatorTest.php +++ b/tests/Validation/ValidationValidatorTest.php @@ -7407,6 +7407,11 @@ public function testParsingArrayKeysWithDot() $v = new Validator($trans, ['foo.bar' => 'valid'], []); $v->sometimes('foo\.bar', 'required', fn () => true); $this->assertFalse($v->fails()); + + $v = new Validator($trans, ['name' => 'ab'], ['name' => 'required']); + $v->appendRules(['name' => 'string']); + $v->appendRules(['name' => 'min:5|max:255']); + $this->assertTrue($v->fails()); } public function testParsingArrayKeysWithDotWhenTestingExistence()