Drupal 8 propose nativement des pages pour gérer l'inscription, la connexion, l'oubli de mot passe.
Malheureusement actuellement il n'y a pas de suggestion de template proposée. (Comme on peut le voir habituellement en commentaire dans le code source lorsque le mode debug est activé.)
Il faut donc procéder autrement et utiliser les hook_form_alter() et hook_theme() classiques.
Par exemple, pour surcharger le formulaire de la page oubli de mot de passe :
// mymodule.module
/**
* Implements hook_form_alter()
*/
function mymodule_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
// Si le formulaire est celui d'oubli de mot de passe
if ($form_id == 'user_pass') {
$form['#theme'] = ['my_register_form'];
}
}
/**
* Implements hook_themer()
*/
function mymodule_theme(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
return [
'my_password_form' => [
'template' => 'user_forget_password_form',
'render element' => 'form',
],
];
}
Explications :
- Le
hook_form_alter()
permet de modifier le thème à utiliser pour le formulaire. Le thème choisi doit exister ou être déclaré dans votre module. - Le
hook_theme()
permet de déclarer le nouveau thèmemy_password_form
et d'y affecter un template spécifique.
Remarque :
Par défaut, sans cette configuration, le template natif form.html.twig
serait utilisé.
Pour créer votre propre template il peut donc être pratique d'en faire une copie,
la renommer (ici user_forget_password_form.html.twig
) et de s'en servir comme base pour effectuer
vos modifications.