class EnumConstraintValidator
Same name and namespace in other branches
- main core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/EnumConstraintValidator.php \Drupal\Core\Validation\Plugin\Validation\Constraint\EnumConstraintValidator
Validates the Enum constraint.
Hierarchy
- class \Drupal\Core\Validation\Plugin\Validation\Constraint\EnumConstraintValidator uses \Drupal\Core\TypedData\Validation\TypedDataAwareValidatorTrait extends \Symfony\Component\Validator\ConstraintValidator
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\ConstraintView 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,
]);
}
}
}
Members
| Title Sort descending | Modifiers | Object type | Summary |
|---|---|---|---|
| EnumConstraintValidator::validate | public | function | |
| TypedDataAwareValidatorTrait::getTypedData | public | function | Gets the typed data object for the validated value. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.