diff --git a/composer.json b/composer.json index c05ee6e..214092d 100644 --- a/composer.json +++ b/composer.json @@ -39,6 +39,7 @@ "nette/http": "^3.2.3", "psr/log": "^2.0.0 || ^3.0.0", "symfony/console": "^6.4.0 || ^7.0.0", + "symfony/translation": "^6.4.0 | ^7.0.0", "symfony/validator": "^6.4.0 || ^7.0.0", "symfony/yaml": "^6.4.0 || ^7.0.0", "tracy/tracy": "^2.10.5" diff --git a/src/Core/Mapping/Validator/SymfonyValidator.php b/src/Core/Mapping/Validator/SymfonyValidator.php index 80e7845..0970bdf 100644 --- a/src/Core/Mapping/Validator/SymfonyValidator.php +++ b/src/Core/Mapping/Validator/SymfonyValidator.php @@ -8,6 +8,7 @@ use Symfony\Component\Validator\ConstraintValidatorFactoryInterface; use Symfony\Component\Validator\ConstraintViolationListInterface; use Symfony\Component\Validator\Validation; +use Symfony\Contracts\Translation\TranslatorInterface; class SymfonyValidator implements IEntityValidator { @@ -16,6 +17,8 @@ class SymfonyValidator implements IEntityValidator private ?ConstraintValidatorFactoryInterface $constraintValidatorFactory = null; + private ?TranslatorInterface $translator = null; + public function __construct(?Reader $reader = null) { $this->reader = $reader; @@ -27,6 +30,11 @@ public function setConstraintValidatorFactory(ConstraintValidatorFactoryInterfac $this->constraintValidatorFactory = $constraintValidatorFactory; } + public function setTranslator(TranslatorInterface $translator): void + { + $this->translator = $translator; + } + /** * @throws ValidationException * @phpcsSuppress SlevomatCodingStandard.TypeHints.TypeHintDeclaration.MissingParameterTypeHint @@ -44,6 +52,10 @@ public function validate(object $entity): void $validatorBuilder->setConstraintValidatorFactory($this->constraintValidatorFactory); } + if ($this->translator !== null) { + $validatorBuilder->setTranslator($this->translator); + } + $validator = $validatorBuilder->getValidator(); /** @var ConstraintViolationListInterface $violations */ diff --git a/tests/Cases/Core/DI/ApiExtension.phpt b/tests/Cases/Core/DI/ApiExtension.phpt index 6dae956..293b387 100644 --- a/tests/Cases/Core/DI/ApiExtension.phpt +++ b/tests/Cases/Core/DI/ApiExtension.phpt @@ -107,6 +107,7 @@ Toolkit::test(function (): void { ) setup: - setConstraintValidatorFactory(Symfony\Component\Validator\ConstraintValidatorFactory()) + - setTranslator(Symfony\Component\Translation\Translator(en)) api: plugins: Apitte\Core\DI\Plugin\CoreMappingPlugin: