function UserMailRequiredValidator::validate
File
- 
              core/
modules/ user/ src/ Plugin/ Validation/ Constraint/ UserMailRequiredValidator.php, line 20  
Class
- UserMailRequiredValidator
 - Checks if the user's email address is provided if required.
 
Namespace
Drupal\user\Plugin\Validation\ConstraintCode
public function validate($items, Constraint $constraint) {
  /** @var \Drupal\Core\Field\FieldItemListInterface $items */
  /** @var \Drupal\user\UserInterface $account */
  $account = $items->getEntity();
  if (!isset($account)) {
    return;
  }
  $existing_value = NULL;
  // Only validate for existing user.
  if (!$account->isNew()) {
    $account_unchanged = \Drupal::entityTypeManager()->getStorage('user')
      ->loadUnchanged($account->id());
    $existing_value = $account_unchanged->getEmail();
  }
  $required = !(!$existing_value && \Drupal::currentUser()->hasPermission('administer users'));
  if ($required && (!isset($items) || $items->isEmpty())) {
    $this->context
      ->addViolation($constraint->message, [
      '@name' => $account->getFieldDefinition('mail')
        ->getLabel(),
    ]);
  }
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.