ComplexDataConstraint.php
Same filename and directory in other branches
- 11.x core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/ComplexDataConstraint.php
- 10 core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/ComplexDataConstraint.php
- 9 core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/ComplexDataConstraint.php
- 8.9.x core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/ComplexDataConstraint.php
Namespace
Drupal\Core\Validation\Plugin\Validation\ConstraintFile
-
core/
lib/ Drupal/ Core/ Validation/ Plugin/ Validation/ Constraint/ ComplexDataConstraint.php
View source
<?php
namespace Drupal\Core\Validation\Plugin\Validation\Constraint;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\Core\Validation\Attribute\Constraint;
use Symfony\Component\Validator\Constraint as SymfonyConstraint;
/**
* Complex data constraint.
*
* Validates properties of complex data structures.
*/
class ComplexDataConstraint extends SymfonyConstraint {
/**
* An array of constraints for contained properties, keyed by property name.
*
* @var array
*/
public $properties;
public function __construct(?array $properties = NULL, ?array $groups = NULL, mixed $payload = NULL, ...$otherProperties) {
if ($properties === NULL) {
if (!empty($otherProperties)) {
$properties = $otherProperties;
}
else {
throw new \InvalidArgumentException('Properties must be passed to ComplexData constraint');
}
}
parent::__construct(groups: $groups, payload: $payload);
$this->properties = $properties;
$constraint_manager = \Drupal::service('validation.constraint');
// Instantiate constraint objects for array definitions.
foreach ($this->properties as &$constraints) {
foreach ($constraints as $id => $options) {
if (!is_object($options)) {
$constraints[$id] = $constraint_manager->create($id, $options);
}
}
}
}
}
Classes
| Title | Deprecated | Summary |
|---|---|---|
| ComplexDataConstraint | Complex data constraint. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.