Drupal 8 & Drupal 9 - Ajouter un champ Media dans un formulaire et l'afficher dans un template

Posté le Jeudi 1 octobre 2020 - 11:55
Dernière mise à jour le Vendredi 9 octobre 2020 - 15:33

VIa le module media_library_form_element, Voici comment ajouter un champ de type « référence à un media » dans un formulaire personnalisé en utilisant le widget Media Library :

  1. $form['video'] = [
  2. '#type' => 'media_library',
  3. '#allowed_bundles' => ['video', 'remote_video'],
  4. '#title' => t('Video'),
  5. '#default_value' => $config->get('video') ?? NULL,
  6. ];

la clé #allowed_bundles contient la liste des types de media que l'on veut autoriser

Voici ensuite comment le rendre dans un template via un controller :

Dans le controller :

  1. if($config['video'] && $media = Media::load($config['video'])) {
  2. $config['video'] = $this->entityTypeManager->getViewBuilder('media')->view($media, 'default');
  3. }
  4.  
  5. return [
  6. '#theme' => 'mon_template',
  7. '#data' => $config,
  8. ];

et dans le template twig, un simple :

{{ data.video }}

 

Aller plus loin ?

 

Ajouter un commentaire

Ne sera pas publié

HTML restreint

  • Balises HTML autorisées : <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Les adresses de pages web et les adresses courriel se transforment en liens automatiquement.
CAPTCHA Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...