Same name and namespace in other branches
  1. 8.9.x core/lib/Drupal/Core/TypedData/DataDefinition.php \Drupal\Core\TypedData\DataDefinition::getConstraints()
  2. 9 core/lib/Drupal/Core/TypedData/DataDefinition.php \Drupal\Core\TypedData\DataDefinition::getConstraints()

Returns an array of validation constraints.

The validation constraints of a definition consist of any for it defined constraints and default constraints, which are generated based on the definition and its data type. See \Drupal\Core\TypedData\TypedDataManager::getDefaultConstraints().

Constraints are defined via an array, having constraint plugin IDs as key and constraint options as values, e.g.

$constraints = array(
  'Range' => array(
    'min' => 5,
    'max' => 10,
  ),
  'NotBlank' => array(),
);

Options have to be specified using another array if the constraint has more than one or zero options. If it has exactly one option, the value should be specified without nesting it into another array:

$constraints = array(
  'EntityType' => 'node',
  'Bundle' => 'article',
);

Note that the specified constraints must be compatible with the data type, e.g. for data of type 'entity' the 'EntityType' and 'Bundle' constraints may be specified.

Return value

array[] An array of validation constraint definitions, keyed by constraint name. Each constraint definition can be used for instantiating \Symfony\Component\Validator\Constraint objects.

Overrides DataDefinitionInterface::getConstraints

See also

\Drupal\Core\Validation\ConstraintManager

\Symfony\Component\Validator\Constraint

2 calls to DataDefinition::getConstraints()
DataDefinition::getConstraint in core/lib/Drupal/Core/TypedData/DataDefinition.php
Returns a validation constraint.
DataReferenceTargetDefinition::getConstraints in core/lib/Drupal/Core/TypedData/DataReferenceTargetDefinition.php
Returns an array of validation constraints.
1 method overrides DataDefinition::getConstraints()
DataReferenceTargetDefinition::getConstraints in core/lib/Drupal/Core/TypedData/DataReferenceTargetDefinition.php
Returns an array of validation constraints.

File

core/lib/Drupal/Core/TypedData/DataDefinition.php, line 261

Class

DataDefinition
A typed data definition class for defining data based on defined data types.

Namespace

Drupal\Core\TypedData

Code

public function getConstraints() {
  $constraints = $this->definition['constraints'] ?? [];
  $constraints += $this
    ->getTypedDataManager()
    ->getDefaultConstraints($this);

  // If either the constraints defined on this data definition or the default
  // constraints for this data definition's type contain the `NotBlank`
  // constraint, then prevent a validation error from `NotBlank` if `NotNull`
  // already would generate one. (When both are present, `NotBlank` should
  // allow a NULL value, otherwise there will be two validation errors with
  // distinct messages for the exact same problem. Automatically configuring
  // `NotBlank`'s `allowNull: true` option mitigates that.)
  // @see ::isRequired()
  // @see \Drupal\Core\TypedData\TypedDataManager::getDefaultConstraints()
  if (array_key_exists('NotBlank', $constraints) && $this
    ->isRequired()) {
    assert(array_key_exists('NotNull', $constraints));
    $constraints['NotBlank']['allowNull'] = TRUE;
  }
  return $constraints;
}