function FileValidationConstraintValidator::validate

Same name and namespace in other branches
  1. 9 core/modules/file/src/Plugin/Validation/Constraint/FileValidationConstraintValidator.php \Drupal\file\Plugin\Validation\Constraint\FileValidationConstraintValidator::validate()
  2. 8.9.x core/modules/file/src/Plugin/Validation/Constraint/FileValidationConstraintValidator.php \Drupal\file\Plugin\Validation\Constraint\FileValidationConstraintValidator::validate()
  3. 11.x core/modules/file/src/Plugin/Validation/Constraint/FileValidationConstraintValidator.php \Drupal\file\Plugin\Validation\Constraint\FileValidationConstraintValidator::validate()

File

core/modules/file/src/Plugin/Validation/Constraint/FileValidationConstraintValidator.php, line 37

Class

FileValidationConstraintValidator
Checks that a file referenced in a file field is valid.

Namespace

Drupal\file\Plugin\Validation\Constraint

Code

public function validate($value, Constraint $constraint) {
  // Get the file to execute validators.
  $target = $value->get('entity')
    ->getTarget();
  if (!$target) {
    return;
  }
  $file = $target->getValue();
  // Get the validators.
  $validators = $value->getUploadValidators();
  // Always respect the configured maximum file size.
  $field_settings = $value->getFieldDefinition()
    ->getSettings();
  if (array_key_exists('max_filesize', $field_settings)) {
    $validators['FileSizeLimit'] = [
      'fileLimit' => Bytes::toNumber($field_settings['max_filesize']),
    ];
  }
  else {
    // Do not validate the file size if it is not set explicitly.
    unset($validators['FileSizeLimit']);
  }
  // Checks that a file meets the criteria specified by the validators.
  if ($violations = $this->fileValidator
    ->validate($file, $validators)) {
    foreach ($violations as $violation) {
      $this->context
        ->addViolation($violation->getMessage());
    }
  }
}

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