From 215aaf2a0999b95f8ac16579d11d25a0cbe4c15e Mon Sep 17 00:00:00 2001 From: Mohamed Said Date: Fri, 1 Apr 2016 20:33:44 +0000 Subject: [PATCH] Fix adding implicit rules via sometimes() method --- src/Illuminate/Validation/Validator.php | 6 +++++- tests/Validation/ValidationValidatorTest.php | 5 +++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Illuminate/Validation/Validator.php b/src/Illuminate/Validation/Validator.php index 0d59c1f54af4..a0b9402f2b51 100755 --- a/src/Illuminate/Validation/Validator.php +++ b/src/Illuminate/Validation/Validator.php @@ -278,7 +278,11 @@ public function sometimes($attribute, $rules, callable $callback) if (call_user_func($callback, $payload)) { foreach ((array) $attribute as $key) { - $this->mergeRules($key, $rules); + if (Str::contains($key, '*')) { + $this->explodeRules([$key => $rules]); + } else { + $this->mergeRules($key, $rules); + } } } } diff --git a/tests/Validation/ValidationValidatorTest.php b/tests/Validation/ValidationValidatorTest.php index 5630764b15e2..df872e98e92e 100755 --- a/tests/Validation/ValidationValidatorTest.php +++ b/tests/Validation/ValidationValidatorTest.php @@ -1962,6 +1962,11 @@ public function testSometimesAddingRules() $v = new Validator($trans, ['x' => 'foo'], ['x' => 'Required']); $v->sometimes('x', ['Foo', 'Bar:Baz'], function ($i) { return $i->x == 'foo'; }); $this->assertEquals(['x' => ['Required', 'Foo', 'Bar:Baz']], $v->getRules()); + + $trans = $this->getRealTranslator(); + $v = new Validator($trans, ['foo' => [['name' => 'first', 'title' => null]]], []); + $v->sometimes('foo.*.name', 'Required|String', function ($i) { return $i['foo'][0]['title'] === null; }); + $this->assertEquals(['foo.0.name' => ['Required', 'String']], $v->getRules()); } public function testCustomValidators()