Dans drupal 9, via la librairie jquery UI Dialog, Il est possible très facilement d'ouvrir des pages dans des fenêtres modales (ou « popin », « Lightbox »...) Dans votre contrôleur :
# On attache la librairie nécessaire
$build['#attached']['library'][] = 'core/drupal.dialog';
# On défini notre lien
$build['link'] = [
'title' => $this->t("Contacter l'annonceur"),
'url' => \Drupal\Core\Url::fromRoute('ma_page'),
'attributes' => [
'class' => ['use-ajax'],
'data-dialog-type' => 'modal',
'data-dialog-options' => Json::encode([
'width' => 400,
]),
],
];
Voir toutes les options qu'il est possible d'utiliser : https://jqueryui.com/dialog/#content
Pour faire la même chose directement dans un template twig :
{# on ajoute la librairie nécessaire #}
{{ attach_library('core/drupal.dialog')}}
{# Lien à ouvrir dans une modale #}
<a class="use-ajax" data-dialog-type="modal" data-dialog-options="{"width":400}" href="{{ path('ma_page') }}">{{ "Contacter l'annonceur" }}</a>
Commentaires
Bonjour,. Je souhaite ouvrir des URL spécifiques (de mon site) dans une fenêtre modale. J'ai essayé d'utiliser ce lien pour un test. Merci!
Ajouter un commentaire