class FieldStorageIndexesConstraintValidator
Same name and namespace in other branches
- 11.x core/modules/field/src/Plugin/Validation/Constraint/FieldStorageIndexesConstraintValidator.php \Drupal\field\Plugin\Validation\Constraint\FieldStorageIndexesConstraintValidator
Validates FieldStorageIndexesConstraint.
Hierarchy
- class \Drupal\field\Plugin\Validation\Constraint\FieldStorageIndexesConstraintValidator extends \Symfony\Component\Validator\ConstraintValidator
Expanded class hierarchy of FieldStorageIndexesConstraintValidator
1 file declares its use of FieldStorageIndexesConstraintValidator
- FieldStorageIndexesValidationTest.php in core/
modules/ field/ tests/ src/ Kernel/ Config/ FieldStorageIndexesValidationTest.php
File
-
core/
modules/ field/ src/ Plugin/ Validation/ Constraint/ FieldStorageIndexesConstraintValidator.php, line 14
Namespace
Drupal\field\Plugin\Validation\ConstraintView source
class FieldStorageIndexesConstraintValidator extends ConstraintValidator {
/**
* {@inheritdoc}
*/
public function validate(mixed $value, Constraint $constraint) : void {
if (!$constraint instanceof FieldStorageIndexesConstraint) {
throw new UnexpectedTypeException($constraint, FieldStorageIndexesConstraint::class);
}
if ($value === NULL || $value === []) {
return;
}
if (!is_array($value)) {
$this->context
->buildViolation($constraint->message)
->addViolation();
return;
}
foreach ($value as $index_name => $columns) {
if (!is_string($index_name) || $index_name === '') {
$this->context
->buildViolation($constraint->invalidIndexNameMessage)
->setParameter('@index', (string) $index_name)
->addViolation();
continue;
}
if (!is_array($columns) || !array_is_list($columns)) {
$this->context
->buildViolation($constraint->invalidIndexMessage)
->setParameter('@index', $index_name)
->addViolation();
continue;
}
foreach ($columns as $column) {
if (is_string($column) && $column !== '') {
continue;
}
if (is_array($column)) {
if ($column === [] || !array_is_list($column) || count($column) != 2) {
$this->context
->buildViolation($constraint->invalidColumnMessage)
->setParameter('@index', $index_name)
->addViolation();
continue;
}
$name = $column[0] ?? NULL;
if (!is_string($name) || $name === '') {
$this->context
->buildViolation($constraint->invalidColumnMessage)
->setParameter('@index', $index_name)
->addViolation();
continue;
}
if (count($column) === 2) {
$length = $column[1];
if (!is_int($length) || $length <= 0) {
$this->context
->buildViolation($constraint->invalidColumnLengthMessage)
->setParameter('@index', $index_name)
->setParameter('@column', $name)
->addViolation();
}
}
continue;
}
$this->context
->buildViolation($constraint->invalidColumnMessage)
->setParameter('@index', $index_name)
->addViolation();
}
}
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.