kgaut.net // Développeur web PHP / Drupal freelance
contactez-moi

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

Cet article a été écrit il y a plus de quatre ans, son contenu n'est peut-être plus d'actualité.

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 }}

 

Contenus en rapport

snippet · 5 Jun 2019 Drupal 8 - rendre un formulaire dans un template snippet · 5 Jul 2019 Drupal 8 - Surcharger la classe de formulaire d'un terme de taxonomie snippet · 4 Jul 2019 Drupal 8 - Surcharger la classe de formulaire d'un nœud

Commentaires (0)