Message d'avertissement

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

#ajax et récuperation de values lors de la soumission

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,

J'ai un simple formulaire, avec une select qui va faire apparaitre une nouveau champ select.

Le soucis est qu'en utilisant #ajax, une fois que je soumet le formulaire, il ne prend pas du tout en compte ce nouvel element dans mon $form_state['values']

function my_form($form, &$form_state)
{

$form['project'] = array(
    '#type' => 'select',
    '#title' => t('Project'),
    '#default_value' => 'all',
    '#options' => $list_project,
    '#description' => t('Select the features to launch'),
    '#ajax' => array(
      'callback' => '_my_ajax',
      'wrapper' => 'features_ajax',
      'method' => 'replace',
      'effect' => 'slide',
      'event' => 'change'
    ),
    '#suffix' => "<div id ='features_ajax'></div>",
  );
...

}

function _my_ajax($form, $form_state)
{
$form['features'] = array(
      '#type' => 'select',
      '#title' => t('Features test'),
      '#default_value' => 'all',
      '#options' => $list_features,
      '#description' => t('Select the features to launch'),
      '#multiple' => true,
      '#size' => 10,
      '#prefix' => "<div id ='features_ajax'>",
      '#suffix' => "</div>",
    );

  return $form['features'];
  }

Forum : 
Version de Drupal : 
Tags : 

Yep,

Merci pour le lien, bien qu'un peu tard, j'ai trouvé la réponse hier :p

Le point important :

// Sauvegarde du formulaire dans le cache
  form_set_cache($form_build_id, $form, $form_state);

  // Reconstruction du formulaire
  $form = form_builder($_POST['form_id'], $form, $form_state);