Drupal: Comment Rendre les Résultats de Formulaire sur la Même Page que le Formulaire
Comment puis-je imprimer les résultats de la soumission d'un formulaire sur la même page que le formulaire lui-même?
Pertinentes hook_menu:
$items['admin/content/ncbi_subsites/paths'] = array(
'title' => 'Paths',
'description' => 'Paths for a particular subsite',
'page callback' => 'ncbi_subsites_show_path_page',
'access arguments' => array( 'administer site configuration' ),
'type' => MENU_LOCAL_TASK,
);
page de rappel:
function ncbi_subsites_show_path_page() {
$f = drupal_get_form('_ncbi_subsites_show_paths_form');
return $f;
}
Bâtiment de forme de la fonction:
function _ncbi_subsites_show_paths_form() {
//bunch of code here
$form['subsite'] = array(
'#title' => t('Subsites'),
'#type' => 'select',
'#description' => 'Choose a subsite to get its paths',
'#default_value' => 'Choose a subsite',
'#options'=> $tmp,
);
$form['showthem'] = array(
'#type' => 'submit',
'#value' => 'Show paths',
'#submit' => array( 'ncbi_subsites_show_paths_submit'),
);
return $form;
}
Soumettre fonction (sauté de valider la fonction pour des raisons de concision)
function ncbi_subsites_show_paths_submit( &$form, &$form_state ) {
//dpm ( $form_state );
$subsite_name = $form_state['values']['subsite'];
$subsite = new Subsite( $subsite_name ); //y own class that I use internally in this module
$paths = $subsite->normalized_paths;
//build list
$list = theme_item_list( $paths );
}
Si j'ai l'impression que la variable $list, c'est exactement ce que je veux, mais je ne suis pas sûr de la façon de l'obtenir dans la page avec la forme originale de la page construite à partir de 'ncbi_subsites_show_path_page'. Toute aide est grandement appréciée!
OriginalL'auteur Aaron | 2010-04-28
Vous devez vous connecter pour publier un commentaire.
Les informations clés dans le lien Nikit affiché est de $form_state['reconstruire']. Voici quelques informations auprès de Drupal 7 de la documentation qui, je crois, s'applique de la même pour Drupal 6...
Aussi dans l'exemple de ce lien, vous pouvez voir $form_state['stockage'] utilisé. Je crois que ['stockage'] est un lieu dédié où vous pouvez stocker en toute sécurité les données entre les validations, les soumet etc.
Le problème est que je n'ai pas accès à $form_state de la page en fonction de gestionnaire. Je voudrais stocker quelque chose dans la matrice de stockage de $form_state, mais j'ai besoin de cette valeur dans la page gestionnaire, non pas pour la forme de construction de la fonction...
Drupal passera dans l' $form_state variable à votre bâtiment de forme de la fonction, si vous le mettez dans la définition de la fonction -- il ne sera jamais transmise à la page de rappel, comme que est à l'extérieur de la forme de l'API de portée. À l'intérieur de votre forme du générateur de fonction, vous pouvez basculer sur la base du contenu de la forme de l'état et d'ajouter des éléments supplémentaires de type "balisage" contenant les résultats que vous souhaitez afficher.
OriginalL'auteur
http://robshouse.net/blog-post/redirect-destination-after-submitting-multi-step-drupal-form
OriginalL'auteur Nikit
C'est un travail complet exemple d'une page et une liste sur la même page
OriginalL'auteur billyJoe
Drupal6 nœud.module et dblog.module de le faire pour admin/content/node et admin/reports/dblog en fournissant une page de rappel qui comprend le formulaire rendu à sa sortie.
Dans le formulaire de soumission, filtre de mise à jour, les paramètres sont stockés dans $_SESSION.
Dans la page de rappel, il rend les résultats sur la base des paramètres de filtre stocké dans $_SESSION.
$_SESSION est juste un autre mondial ici (bien que un persistante).
OriginalL'auteur Chris Burgess
Pour Drupal7 je trouve que si vous utilisez
$form_state['rebuild']
, puis les variables de formulaire peut être mieux accessible à partir de l'PHP super-variable globale$_POST
(ou$_REQUEST
). Toutefois, si vous utilisez$form_state['redirect']
, la solution avec$_SESSION
est mieux (au lieu d'utiliser$_GET
ou$_REQUEST
).Je trouve cette question très délicate, même pour les experts. Peut-être que Drupal a plus de moyen facile et intuitif que nous ne savons pas.
OriginalL'auteur dashohoxha