diff --git a/src/Illuminate/Validation/Concerns/ValidatesAttributes.php b/src/Illuminate/Validation/Concerns/ValidatesAttributes.php index 9e97da97181f..9803208ae902 100644 --- a/src/Illuminate/Validation/Concerns/ValidatesAttributes.php +++ b/src/Illuminate/Validation/Concerns/ValidatesAttributes.php @@ -656,6 +656,8 @@ public function validateEmail($attribute, $value, $parameters) return new FilterEmailValidation(); } elseif ($validation === 'filter_unicode') { return FilterEmailValidation::unicode(); + } elseif (is_string($validation) && class_exists($validation)) { + return $this->container->make($validation); } }) ->values() diff --git a/tests/Validation/ValidationValidatorTest.php b/tests/Validation/ValidationValidatorTest.php index 196295923eae..44b152c41c0b 100755 --- a/tests/Validation/ValidationValidatorTest.php +++ b/tests/Validation/ValidationValidatorTest.php @@ -4,6 +4,7 @@ use DateTime; use DateTimeImmutable; +use Egulias\EmailValidator\Validation\NoRFCWarningsValidation; use Illuminate\Container\Container; use Illuminate\Contracts\Auth\Authenticatable; use Illuminate\Contracts\Auth\Guard; @@ -2422,6 +2423,17 @@ public function testValidateEmailWithFilterUnicodeCheck() $this->assertFalse($v->passes()); } + public function testValidateEmailWithCustomClassCheck() + { + $container = m::mock(Container::class); + $container->shouldReceive('make')->with(NoRFCWarningsValidation::class)->andReturn(new NoRFCWarningsValidation()); + + $v = new Validator($this->getIlluminateArrayTranslator(), ['x' => 'foo@bar '], ['x' => 'email:'.NoRFCWarningsValidation::class]); + $v->setContainer($container); + + $this->assertFalse($v->passes()); + } + /** * @dataProvider validUrls */