Validation média

Comment valider une image lors du téléchargement si elle est au format 16:9 ?

Pour ce faire, vous devez ajouter upload_validators au widget de champ en utilisant hook_form_alter comme suit :

/**
 * Implements hook_form_alter().
 */
function MODULENAME_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  switch ($form_id) {
    case 'node_article_form':
    case 'node_article_edit_form':
      $form['field_image']['widget'][0]['#upload_validators']['_validate_article_image'] = [];
      break;
  }
}

et ensuite implémenter le callback _validate_article_image :

/**
 * Validate article image.
 *
 * @param \Drupal\file\FileInterface $file
 *   File object.
 *
 * @return array
 *   Errors array.
 */
function _validate_article_image(FileInterface $file) {
  $errors = [];
  $image = \Drupal::service('image.factory')->get($file->getFileUri());
  if ($image->isValid()) {
    // Ajoutez vos validations de condition ici !
    $width = $image->getWidth();
    $height = $image->getHeight();
    if ($width / $height != 16 / 9) {
      $errors[] = t("The image should be 16:9 format!");
    }
  }
  return $errors;
}

Voilà c'est fait.

https://www.berramou.com/blog/drupal-8-9-add-custom-validation-file-upload