Bien souvent on souhaite pouvoir mettre en forme un formulaire dont on n'est pas l'auteur. C'est par exemple le cas d'un formulaire de contact. Drupal est capable d'associer un fichier de template à n'importe quel formulaire. Voyons donc les différentes étapes à mettre en oeuvre.

Identifier le formulaire

Il nous faut tout d'abord connaitre l'identifiant du formulaire auquel on souhaite associer un fichier de template. Pour ce faire on implémente le hook_form_alter(&$form, $form_state, $form_id) qui est appelé pour n'iporte quel formulaire. On peut alors utiliser simplement la fonction drupal_set_message($form_id) qui va afficher l'identifiant. Par exemple pour le formulaire de contact l'identifiant est contact_message_feedback_form.

Associer le formulaire et le template

L'association se fait grace au hook_theme(). Le nom du formattage doit correspondre à l'identifiant du formulaire. On définit en plus le render element comme form. Dans le cas du formulaire de contact,  le template appelé est alors /templates/contact-message-feedback-form.html.twig. Afin que Drupal reconnaisse ce nouveau formattage, il est nécessaire de vider le cache.

template_formulaire.module

Template

Uns fois le fichier créé, il est possible d'afficher certains champs indépendemment. Ne pas oublier d'afficher tous les autres champs dans le template afin de s'assurer que tout champ ajouté à posteriori sera bien rendu. On a ainsi le contrôle complet via un fichier de template sur la disposition des champs, et ce pour n'importe quel formulaire. 

contact-message-feedback-form.html

Dans la même catégorie

CMS Drupal

Drupal : LE CMS pour les professionnels ?


Drupal et les structures de données

Que reste-t-il à Drupal ?


Drupal et les structures de données

Drupal et les structures de données