Modifier le contenu d'un formulaire

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Je cherche comment modifier le contenu d'un formulaire d'enregistrement de node pendant la saisie :

Le formulaire contient (entre autres) :
- une liste de type 'select'
- un champ 'textarea'
- un bouton 'button'

Quand l'utilisateur clique sur le bouton, je voudrais que le contenu du textarea soit mis à jour en fonction du la sélection de la liste select.

A priori la seule façon de procéder est de faire le traitement au niveau du hook_nodeapi, en traitement de 'validate'. La fonction est appelée mais impossible de mettre le champ à jour, même en utilisant la fonction form_set_value.

Le code est a priori correct, mais le formulaire ne se met pas à jour. Quelqu'un a-t-il une piste ?

Forum : 
Version de Drupal : 

On m'a donné la solution sur Drupal.org, je la poste ici car ça peut servir.

Ajouter dans la fonction hook_form_alter du module :

$form['#after_build'][] = 'mymodule_button_handler';

Ajouter la fonction de gestion du bouton :

function mymodule_button_handler($form, $form_values) {
  if ($_POST['op'] == 'my button') {
    $form['my_textarea']['#value'] = my_function($form_values['my_select']);
  }
  return $form;
}