function ClassResolverConstraintValidator::validate

File

core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/ClassResolverConstraintValidator.php, line 33

Class

ClassResolverConstraintValidator
Validates if a method on a service or instantiated object returns true.

Namespace

Drupal\Core\Validation\Plugin\Validation\Constraint

Code

public function validate(mixed $value, Constraint $constraint) : void {
  if (!$constraint instanceof ClassResolverConstraint) {
    throw new UnexpectedTypeException($constraint, ClassResolverConstraint::class);
  }
  $service = $this->classResolver
    ->getInstanceFromDefinition($constraint->classOrService);
  if (!method_exists($service, $constraint->method)) {
    throw new \InvalidArgumentException('The method "' . $constraint->method . '" does not exist on the service "' . $constraint->classOrService . '".');
  }
  $result = $service->{$constraint->method}($value);
  if ($result !== TRUE) {
    $this->context
      ->buildViolation($constraint->message)
      ->setParameter('@classOrService', $constraint->classOrService)
      ->setParameter('@method', $constraint->method)
      ->setParameter('@value', $value)
      ->addViolation();
  }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.