class EnumConstraintValidator

Same name and namespace in other branches
  1. 11.x core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/EnumConstraintValidator.php \Drupal\Core\Validation\Plugin\Validation\Constraint\EnumConstraintValidator

Validates the Enum constraint.

Hierarchy

Expanded class hierarchy of EnumConstraintValidator

1 file declares its use of EnumConstraintValidator
EnumConstraintValidatorTest.php in core/tests/Drupal/KernelTests/Core/TypedData/EnumConstraintValidatorTest.php

File

core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/EnumConstraintValidator.php, line 15

Namespace

Drupal\Core\Validation\Plugin\Validation\Constraint
View source
class EnumConstraintValidator extends ConstraintValidator {
  use TypedDataAwareValidatorTrait;
  
  /**
   * {@inheritdoc}
   */
  public function validate(mixed $value, Constraint $constraint) : void {
    if (!isset($value)) {
      return;
    }
    if (!$constraint instanceof EnumConstraint) {
      throw new UnexpectedTypeException($constraint, EnumConstraint::class);
    }
    $class = $this->getTypedData()
      ->getDataDefinition()['enum_class'] ?? '';
    if (empty($class)) {
      $this->context
        ->addViolation($constraint->missingClassMessage);
      return;
    }
    if (!$value instanceof \UnitEnum) {
      $this->context
        ->addViolation($constraint->notEnumMessage);
      return;
    }
    if (!$value instanceof $class) {
      $this->context
        ->addViolation($constraint->invalidClassMessage, [
        '%class' => $class,
      ]);
    }
  }

}

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