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.