C'est une petite fonctionnalité dont vous pourriez avoir besoin, voici une présentation du fonctionnement d'une telle fonctionnalité. A première vue cela peut sembler très facile à implémenter mais au final ça ne l'est pas tant que ça.
Prenons l'exemple d'un formulaire qui permet de clore des votes sur des sessions, cette action étant importante nous allons ajouter une étape de confirmation avant de faire le traitement.
Je simplifie volontairement le formulaire que l'on créé, résumons le à un simple bouton d'action :
'submit',
'#value' => t('Clore les votes'),
);
return $form;
}
?>
Ensuite dans le traitement de ce formulaire il faut faire une redirection vers le formulaire de confirmation. Aucun traitement ne doit être fait ici sachant que le formulaire n'a pas encore été confirmé par l'utilisateur.
Sachant que nous faisons une redirection vers une entrée de menu, il faut la déclarer via un hook_menu().
array(
'page callback' => 'drupal_get_form',
'page arguments' => array('feature_conference_close_sessions_confirm_form'),
'access callback' => TRUE,
),
}
?>
Dans ce formulaire il vous faut utiliser la fonction confirm_form() (http://api.drupal.org/api/function/confirm_form/6) pour obtenir la page de confirmation.
", $desc);
}
?>
Ensuite on retombe dans le fonctionnement classique des formulaires, il suffit de faire le traitement des données dans la fonction de submit du formulaire.
');
}
?>
Et nous voilà avec un formulaire de confirmation fonctionnel. Le cas d'usage est simple, si vous souhaitez faire une action plus avancée comme par exemple clore une session précise, il faut que vous passiez les données dans le formulaire de confirmation via un ou plusieurs arguments à l'url de traitement car le fait d'effectuer une redirection entraine la perte des données soumise par le formulaire principal.