3 namespace Drupal\Core\Validation\Plugin\Validation\Constraint;
5 use Symfony\Component\Validator\Constraint;
8 * Complex data constraint.
10 * Validates properties of complex data structures.
14 * label = @Translation("Complex data", context = "Validation")
17 class ComplexDataConstraint extends Constraint {
20 * An array of constraints for contained properties, keyed by property name.
29 public function __construct($options = NULL) {
30 // Allow skipping the 'properties' key in the options.
31 if (is_array($options) && !array_key_exists('properties', $options)) {
32 $options = ['properties' => $options];
34 parent::__construct($options);
35 $constraint_manager = \Drupal::service('validation.constraint');
37 // Instantiate constraint objects for array definitions.
38 foreach ($this->properties as &$constraints) {
39 foreach ($constraints as $id => $options) {
40 if (!is_object($options)) {
41 $constraints[$id] = $constraint_manager->create($id, $options);
50 public function getDefaultOption() {
57 public function getRequiredOptions() {
58 return ['properties'];