Ajouter un lien vide dans un formulaire

Ajouter un lien "vide" dans un formulaire

Tags: 

Question du jour:

Comment ajouter un lien vide dans un formulaire? De préférence en ayant la possibilité d'y intégrer du code HTML...

La problématique que j'ai rencontrée était de créer un lien "non-cliquable". Je cherchais à exploiter la balise "title" d'un lien pour y ajouter des informations utiles à l'utilisateur. Dans l'idéal, je voulais créer un lien avec une îcone qui afficherai des informations au survol de la souris.

Exit le "javascript:void();" qu'on pouvait créer avec Drupal7. Ici, la technique est de passer par la méthode

Url::fromUserInput($user_input, $options);

pour créer un lien qui ne fait pas référence à une url interne au site (fromRoute), ni à une url externe (fromUri). On peut simplement utiliser le '#' pour créer une ancre.

Néanmoins, la génération d'url's en passant par les méthodes statiques de la classe \Drupal\core\Url ne permettent pas d'y intégrer du code HTML. La solution que j'ai trouvée se présente de la manière suivante:

$icon_text = $this->t('<span class="icon">Info</span>');
$url = Url::fromUserInput('#info', [
  'attributes' => [
    'title' => implode(chr(13), $informations),
  ],
]);
$link = \Drupal::service('link_generator')->generate($icon_text, $url);
 
$form['link'] = [
  '#type' => 'markup',
  '#markup' => $link,
];

Au final, le texte du lien, incluant le code HTML, passe par la fonction t(). Une fois le texte créé, je peux créer l'url en lui donnant comme cible '#info' et en lui passant les options nécessaires. Dès lors que j'ai les éléments nécessaires, j'utilise le service "link_generator" pour générer mon lien et je l'ajoute en tant que "#markup" dans mon formulaire.

Ajouter un commentaire

CAPTCHA
Cette question permet de savoir si vous êtes un visiteur ou un robot de soumission de spams