function LangcodeRequiredIfTranslatableValuesConstraintValidator::validate

Same name and namespace in other branches
  1. 11.x core/lib/Drupal/Core/Config/Plugin/Validation/Constraint/LangcodeRequiredIfTranslatableValuesConstraintValidator.php \Drupal\Core\Config\Plugin\Validation\Constraint\LangcodeRequiredIfTranslatableValuesConstraintValidator::validate()

File

core/lib/Drupal/Core/Config/Plugin/Validation/Constraint/LangcodeRequiredIfTranslatableValuesConstraintValidator.php, line 19

Class

LangcodeRequiredIfTranslatableValuesConstraintValidator
Validates the LangcodeRequiredIfTranslatableValues constraint.

Namespace

Drupal\Core\Config\Plugin\Validation\Constraint

Code

public function validate(mixed $value, Constraint $constraint) : void {
  assert($constraint instanceof LangcodeRequiredIfTranslatableValuesConstraint);
  $mapping = $this->context
    ->getObject();
  assert($mapping instanceof Mapping);
  $root = $this->context
    ->getRoot();
  if ($mapping !== $root) {
    @trigger_error(sprintf('The LangcodeRequiredIfTranslatableValues constraint can only be applied to the root object being validated, using the \'config_object\' schema type on \'%s\' is deprecated in drupal:10.3.0 and will trigger a \\LogicException in drupal:11.0.0. See https://www.drupal.org/node/3459863', $root->getName() . '::' . $mapping->getName()), E_USER_DEPRECATED);
    return;
  }
  assert(in_array('langcode', $mapping->getValidKeys(), TRUE));
  $is_translatable = $mapping->hasTranslatableElements();
  if ($is_translatable && !array_key_exists('langcode', $value)) {
    $this->context
      ->buildViolation($constraint->missingMessage)
      ->setParameter('@name', $mapping->getName())
      ->addViolation();
    return;
  }
  if (!$is_translatable && array_key_exists('langcode', $value)) {
    // @todo Convert this deprecation to an actual validation error in
    //   https://www.drupal.org/project/drupal/issues/3440238.
    // phpcs:ignore
    @trigger_error(str_replace('@name', $mapping->getName(), $constraint->superfluousMessage), E_USER_DEPRECATED);
  }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.