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 Mardi 3 novembre 2020 - 08:24

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 :

    $form['video'] = [
      '#type' => 'media_library',
      '#allowed_bundles' => ['video', 'remote_video'],
      '#title' => t('Video'),
      '#default_value' => $config->get('video') ?? NULL,
    ];

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 :

if($config['video'] && $media = Media::load($config['video'])) {
    $config['video'] = $this->entityTypeManager->getViewBuilder('media')->view($media, 'default');
}    

return [
   '#theme' => 'mon_template',
   '#data' => $config,
];

et dans le template twig, un simple :

{{ data.video }}

 

Aller plus loin ?

Ajouter un commentaire

Ne sera pas publié

CAPTCHA Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...