Comment modifier un formulaire avec un hook hook_form_alter() ?
Ajoutez ceci en haut de votre fichier .module :
use Drupal\Core\Form\FormStateInterface;
Le hook pour changer la valeur par défaut d’un champ du formulaire :
/**
* Implements hook_form_alter().
*/
function mymodule_form_alter(&$form, FormStateInterface $form_state, $form_id) {
$array_form_id = array(
'form_id_1',
'form_id_2',
'form_id_3',
);
if (in_array($form_id, $array_form_id)) {
if (isset($form['elements']['nom'])) {
$form['elements']['nom']['#default_value'] = $nom;
}
if (isset($form['elements']['prenom'])) {
form['elements']['prenom']['#default_value'] = $prenom;
}
}
}
Pour connaitre l’id de votre formulaires, il existe plusieurs méthodes. Celle-ci est très simple à mettre en place. Dans le hook, ajoutez cette ligne qui va afficher dans le bloc message le ou les IDs des formulaires présents sur la page. Connaître l’id du formulaire permet d’appliquer une modification uniquement sur un formulaire ou un ensemble de formulaires.
function contact_g7_form_alter(&$form, FormStateInterface $form_state, $form_id) {
drupal_set_message($form_id);
}
On peut aussi modifier les valeurs d'un champ au moment de la validation :
/**
* Implements hook_form_alter().
*/
function mymodule_form_alter(&$form, FormStateInterface $form_state, $form_id) {
$array_form_id = array(
'form_id_1',
'form_id_2',
'form_id_3',
);
if (in_array($form_id, $array_form_id)) {
$form['actions']['submit']['#validate'][] = 'mymodule_form_validate';
}
}
function mymodule_form_validate($form, FormStateInterface $form_state) {
$form_state->setValue('nom', $nom);
}
Ajouter un commentaire