protected RecursiveContextualValidator::validateNode(TypedDataInterface $data, $constraints = NULL, $is_root_call = FALSE)
Validates a Typed Data node in the validation tree.
If no constraints are passed, the data is validated against the constraints specified in its data definition. If the data is complex or a list and no constraints are passed, the contained properties or list items are validated recursively.
Parameters
\Drupal\Core\TypedData\TypedDataInterface $data: The data to validated.
\Symfony\Component\Validator\Constraint[]|null $constraints: (optional) If set, an array of constraints to validate.
bool $is_root_call: (optional) Whether its the most upper call in the type data tree.
Return value
$this
File
- core/lib/Drupal/Core/TypedData/Validation/RecursiveContextualValidator.php, line 120
Class
- RecursiveContextualValidator
- Defines a recursive contextual validator for Typed Data.
Namespace
Drupal\Core\TypedData\Validation
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | protected function validateNode(TypedDataInterface $data , $constraints = NULL, $is_root_call = FALSE) { $previous_value = $this ->context->getValue(); $previous_object = $this ->context->getObject(); $previous_metadata = $this ->context->getMetadata(); $previous_path = $this ->context->getPropertyPath(); $metadata = $this ->metadataFactory->getMetadataFor( $data ); $cache_key = spl_object_hash( $data ); $property_path = $is_root_call ? '' : PropertyPath::append( $previous_path , $data ->getName()); // Pass the canonical representation of the data as validated value to // constraint validators, such that they do not have to care about Typed // Data. $value = $this ->typedDataManager->getCanonicalRepresentation( $data ); $this ->context->setNode( $value , $data , $metadata , $property_path ); if (isset( $constraints ) || ! $this ->context->isGroupValidated( $cache_key , Constraint::DEFAULT_GROUP)) { if (!isset( $constraints )) { $this ->context->markGroupAsValidated( $cache_key , Constraint::DEFAULT_GROUP); $constraints = $metadata ->findConstraints(Constraint::DEFAULT_GROUP); } $this ->validateConstraints( $value , $cache_key , $constraints ); } // If the data is a list or complex data, validate the contained list items // or properties. However, do not recurse if the data is empty. if (( $data instanceof ListInterface || $data instanceof ComplexDataInterface) && ! $data ->isEmpty()) { foreach ( $data as $name => $property ) { $this ->validateNode( $property ); } } $this ->context->setNode( $previous_value , $previous_object , $previous_metadata , $previous_path ); return $this ; } |
Please login to continue.