trait PrecedingConstraintAwareValidatorTrait
Same name in other branches
- 9 core/modules/ckeditor5/src/Plugin/Validation/Constraint/PrecedingConstraintAwareValidatorTrait.php \Drupal\ckeditor5\Plugin\Validation\Constraint\PrecedingConstraintAwareValidatorTrait
- 11.x core/modules/ckeditor5/src/Plugin/Validation/Constraint/PrecedingConstraintAwareValidatorTrait.php \Drupal\ckeditor5\Plugin\Validation\Constraint\PrecedingConstraintAwareValidatorTrait
A constraint may need preceding constraints to not have been violated.
@internal
Hierarchy
- trait \Drupal\ckeditor5\Plugin\Validation\Constraint\PrecedingConstraintAwareValidatorTrait
File
-
core/
modules/ ckeditor5/ src/ Plugin/ Validation/ Constraint/ PrecedingConstraintAwareValidatorTrait.php, line 16
Namespace
Drupal\ckeditor5\Plugin\Validation\ConstraintView source
trait PrecedingConstraintAwareValidatorTrait {
/**
* Checks whether any preceding constraints have been violated.
*
* @param \Symfony\Component\Validator\Constraint $current_constraint
* The constraint currently being validated.
*
* @return bool
* TRUE if any preceding constraints have been violated, FALSE otherwise.
*/
protected function hasViolationsForPrecedingConstraints(Constraint $current_constraint) : bool {
assert($this->context instanceof ExecutionContext);
$earlier_constraints = iterator_to_array($this->getPrecedingConstraints($current_constraint));
$earlier_violations = array_filter(iterator_to_array($this->context
->getViolations()), function (ConstraintViolationInterface $violation) use ($earlier_constraints) {
return in_array($violation->getConstraint(), $earlier_constraints);
});
return !empty($earlier_violations);
}
/**
* Gets the constraints preceding the given constraint in the current context.
*
* @param \Symfony\Component\Validator\Constraint $needle
* The constraint to find the preceding constraints for.
*
* @return iterable
* The preceding constraints.
*/
private function getPrecedingConstraints(Constraint $needle) : iterable {
assert($this->context instanceof ExecutionContext);
$constraints = $this->context
->getMetadata()
->getConstraints();
if (!in_array($needle, $constraints)) {
throw new \OutOfBoundsException();
}
foreach ($constraints as $constraint) {
if ($constraint != $needle) {
(yield $constraint);
}
}
}
}
Members
Title Sort descending | Modifiers | Object type | Summary |
---|---|---|---|
PrecedingConstraintAwareValidatorTrait::getPrecedingConstraints | private | function | Gets the constraints preceding the given constraint in the current context. |
PrecedingConstraintAwareValidatorTrait::hasViolationsForPrecedingConstraints | protected | function | Checks whether any preceding constraints have been violated. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.