diff --git a/src/DI/ValidatorExtension.php b/src/DI/ValidatorExtension.php index dcbda36..d78322a 100644 --- a/src/DI/ValidatorExtension.php +++ b/src/DI/ValidatorExtension.php @@ -16,7 +16,7 @@ use Nette; use Nette\DI\Compiler; use Nette\Utils\Validators; - +use Symfony\Component\Validator\Constraints\Email; /** @@ -37,7 +37,8 @@ class ValidatorExtension extends Nette\DI\CompilerExtension implements ITranslat 'cache' => 'default', 'translationDomain' => NULL, 'debug' => '%debugMode%', - 'strictEmail' => FALSE, + 'strictEmail' => NULL, + 'emailValidationMode' => \Symfony\Component\Validator\Constraints\Email::VALIDATION_MODE_LOOSE ]; @@ -80,12 +81,18 @@ public function loadConfiguration() ->setClass('Symfony\Component\Validator\Validator\ValidatorInterface') ->setFactory('Symfony\Component\Validator\Validator\RecursiveValidator'); - Validators::assertField($config, 'strictEmail', 'boolean'); + if ($config['strictEmail'] !== NULL) { + Validators::assertField($config, 'strictEmail', 'boolean'); + trigger_error('`strictEmail` configuration option is deprecated, use `emailValidationMode` instead.', E_USER_DEPRECATED); + $config['emailValidationMode'] = Email::VALIDATION_MODE_LOOSE; + } + + Validators::assertField($config, 'emailValidationMode', 'string'); $builder->addDefinition($this->prefix('constraint.email')) ->setClass('Symfony\Component\Validator\Constraints\EmailValidator') ->setArguments([ - 'strict' => $config['strictEmail'], + 'defaultMode' => $config['emailValidationMode'], ]) ->addTag(self::TAG_CONSTRAINT_VALIDATOR); diff --git a/tests/KdybyTests/Validator/Extension.phpt b/tests/KdybyTests/Validator/Extension.phpt index 0ccff8e..d873d7e 100644 --- a/tests/KdybyTests/Validator/Extension.phpt +++ b/tests/KdybyTests/Validator/Extension.phpt @@ -118,9 +118,9 @@ class ExtensionTest extends Tester\TestCase public function strictEmailDataProvider() { return [ - [[], FALSE], - [[__DIR__ . '/config/strict-email.neon'], TRUE], - [[__DIR__ . '/config/non-strict-email.neon'], FALSE], + [[], 'loose'], + [[__DIR__ . '/config/strict-email.neon'], 'strict'], + [[__DIR__ . '/config/non-strict-email.neon'], 'loose'], ]; } @@ -138,7 +138,8 @@ class ExtensionTest extends Tester\TestCase $validator = $factory->getInstance(new \Symfony\Component\Validator\Constraints\Email()); Tester\Assert::type('Symfony\Component\Validator\Constraints\EmailValidator', $validator); - $property = new \ReflectionProperty('Symfony\Component\Validator\Constraints\EmailValidator', 'isStrict'); + $property = new \ReflectionProperty('Symfony\Component\Validator\Constraints\EmailValidator', 'defaultMode'); + $property->setAccessible(TRUE); Tester\Assert::same($strict, $property->getValue($validator)); } diff --git a/tests/KdybyTests/Validator/config/non-strict-email.neon b/tests/KdybyTests/Validator/config/non-strict-email.neon index bfc7ea2..9191f75 100644 --- a/tests/KdybyTests/Validator/config/non-strict-email.neon +++ b/tests/KdybyTests/Validator/config/non-strict-email.neon @@ -1,2 +1,2 @@ validator: - strictEmail: false + emailValidationMode: 'loose' diff --git a/tests/KdybyTests/Validator/config/strict-email.neon b/tests/KdybyTests/Validator/config/strict-email.neon index 7a74426..7809444 100644 --- a/tests/KdybyTests/Validator/config/strict-email.neon +++ b/tests/KdybyTests/Validator/config/strict-email.neon @@ -1,2 +1,2 @@ validator: - strictEmail: true + emailValidationMode: 'strict'