3 namespace Drupal\Core\Validation;
5 use Drupal\Core\DependencyInjection\ClassResolverInterface;
6 use Symfony\Component\Validator\Constraint;
7 use Symfony\Component\Validator\ConstraintValidatorFactory as BaseConstraintValidatorFactory;
10 * Defines a constraint validator factory that works with container injection.
12 class ConstraintValidatorFactory extends BaseConstraintValidatorFactory {
15 * Constructs a new ConstraintValidatorFactory.
17 * @param \Drupal\Core\DependencyInjection\ClassResolverInterface $class_resolver
19 public function __construct(ClassResolverInterface $class_resolver) {
20 $this->classResolver = $class_resolver;
26 public function getInstance(Constraint $constraint) {
27 $class_name = $constraint->validatedBy();
29 if (!isset($this->validators[$class_name])) {
30 $this->validators[$class_name] = $this->classResolver->getInstanceFromDefinition($class_name);
33 return $this->validators[$class_name];