Comment modifier un formulaire avec un hook hook_form_alter() ?

Snippet code drupal

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

HTML restreint

  • Balises HTML autorisées : <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Les adresses de pages web et les adresses courriel se transforment en liens automatiquement.

Contact_

Une idée de projet, une recherche de conseil, une mission intégration ou développement ? N’hésitez pas à me contacter.