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
La form api de drupal est très puissante, mais pour jouer avec le markup html avec les #prefix et #suffix peut s'avérer rapidement complexe en plus d'être un peu sale au niveau du code.
Hier, nous avons vu comment surcharger le formulaire de création / modification d'un nœud, voici aujourd'hui comment faire la même chose mais pour un terme de taxonomie.
Pour modifier le formulaire de création d'un nœud sous drupal 8, on peut utiliser le bon vieux HOOK_form_alter(), mais on peut aussi faire quelque chose de plus « propre » en altérant le type d'entité pour redéfinir son formulaire.
Cela se passe en deux étapes.
Ajouter un commentaire