function FileThemeHooks::preprocessFileUploadHelp

Prepares variables for file upload help text templates.

Default template: file-upload-help.html.twig.

Parameters

array<string,mixed> $variables: An associative array containing:

  • description: The normal description for this field, specified by the user.
  • upload_validators: An array of upload validators as used in $element['#upload_validators'].

File

core/modules/file/src/Hook/FileThemeHooks.php, line 137

Class

FileThemeHooks
Theme hooks for the file module.

Namespace

Drupal\file\Hook

Code

public function preprocessFileUploadHelp(array &$variables) : void {
  $description = $variables['description'];
  $upload_validators = $variables['upload_validators'];
  $cardinality = $variables['cardinality'];
  $descriptions = [];
  if (!empty($description)) {
    $descriptions[] = FieldFilteredMarkup::create($description);
  }
  if (isset($cardinality)) {
    if ($cardinality == -1) {
      $descriptions[] = $this->t('Unlimited number of files can be uploaded to this field.');
    }
    else {
      $descriptions[] = $this->formatPlural($cardinality, 'One file only.', 'Maximum @count files.');
    }
  }
  if (isset($upload_validators['FileSizeLimit'])) {
    $descriptions[] = $this->t('@size limit.', [
      '@size' => ByteSizeMarkup::create($upload_validators['FileSizeLimit']['fileLimit']),
    ]);
  }
  if (isset($upload_validators['FileExtension'])) {
    $descriptions[] = $this->t('Allowed types: @extensions.', [
      '@extensions' => $upload_validators['FileExtension']['extensions'],
    ]);
  }
  if (isset($upload_validators['FileImageDimensions'])) {
    $max = $upload_validators['FileImageDimensions']['maxDimensions'];
    $min = $upload_validators['FileImageDimensions']['minDimensions'];
    if ($min && $max && $min == $max) {
      $descriptions[] = $this->t('Images must be exactly <strong>@size</strong> pixels.', [
        '@size' => $max,
      ]);
    }
    elseif ($min && $max) {
      $descriptions[] = $this->t('Images must be larger than <strong>@min</strong> pixels. Images larger than <strong>@max</strong> pixels will be resized.', [
        '@min' => $min,
        '@max' => $max,
      ]);
    }
    elseif ($min) {
      $descriptions[] = $this->t('Images must be larger than <strong>@min</strong> pixels.', [
        '@min' => $min,
      ]);
    }
    elseif ($max) {
      $descriptions[] = $this->t('Images larger than <strong>@max</strong> pixels will be resized.', [
        '@max' => $max,
      ]);
    }
  }
  $variables['descriptions'] = $descriptions;
}

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