trait 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.