Message d'avertissement

The subscription service is currently unavailable. Please try again later.

Modifier un élément $form depuis l'extérieur

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 à tous, je vais essayer d'être clair ^^

J'ai un objet Drupal de type select déclaré dans ma fonction hook_form(), qui a comme default_value 0 (dès qu'on le charge sur la page, il sera automatiquement sur le 1er item de la liste).

J'ai maintenant une fonction appelée en AHAH sur le onchange de ce select, et dans cette fonction je voudrais remplacer ce select par lui-même, mais avec une nouvelle default_value : dès que je change l'option du select, je récupère l'indice sélectionné, et je recharge le select avec ce nouvel indice par défaut.

J'espère avoir été assez clair ^^"

Bonne journée à tous !

Forum : 
Version de Drupal : 

Bonjour,
Tu veux modifier la default_value de ton select en AHAH. Quel est le but vu que ta default_value ne sera pas retourné lors d'un submit mais bien la valeur que tu auras selectionné. Sinon pour faire se que tu veux faire encapsule ton select dans le wrapper que tu appels et renvoie ton select en ne changeant que la defaut_value de ton select.

Essayons d'être plus claire avec un peu de code:

$form['zone_de_liste'] = array(
      '#type' => 'select',
      '#title' => t('Nature de la question'),
      '#options' => array(0 => ' - ', '1'  => 'OK' , 2 => 'PAS OK'),
      '#ahah' => array(
        'path' => '_ahah_function',
        'wrapper' => 'wrapperSelect',
        'method' => 'replace',
      ),
      '#prefix' => '<div id="wrapperSelect'">',
      '#suffix' => '</div>',
    );

Ca c'est pour le formulaire.
Ensuite la fonction AHAH

function _ahah_function(){
// Tout le blabla habituel
$form_build_id = $_POST['form_build_id'];
  $id = $_POST['zone_de_liste'];
  $form_state = array('storage' => NULL, 'submitted' => FALSE);
  $form = form_get_cache($form_build_id, $form_state);
  $form['zone_de_liste]['#default_value'] = $id;
 
  form_set_cache($form_build_id, $form, $form_state);
  $form = form_builder($_POST['form_id'], $form, $form_state);
  $output = drupal_render($form['zone_de_liste]);

  print drupal_json(array(
    'status' => TRUE,
    'data' => $output,
  ));
  exit();
}

Voila mais je ne pense pas que tu verras beaucoup de changement vu que je te dis dès que le select à une value de sélectionnée c'est celle-ci qui prend le dessus.

J'espère t'avoir éclairer quand même