J'ai ce formulaire qui accepte l'entrée de l'utilisateur. Ce que j'aime faire est, en fonction de cette entrée de l'utilisateur, je voudrais récupérer les données et les afficher à l'utilisateur.Comment puis-je obtenir les données? (Drupal 6.x)
Jusqu'ici, j'ai implémenté hook_menu et enregistré l'URL respective du formulaire, et implémenté une fonction de soumission référée par l'attribut "#submit" du bouton submit. J'ai également implémenté le code de récupération de données et fonctionne très bien.
Voici mon problème - Je ne sais pas comment afficher les données récupérées. J'ai essayé plusieurs approches pour tenter de trouver la solution. Tout d'abord, avec la fonction de thème, en espérant que l'impression de la valeur de retour afficherait les données. Deuxièmement, mettre l'élément "#action" du tableau de forme avec l'url nouvellement enregistrée, car je pensais que l'utilisation de la même url que la forme ne ferait que retourner Drupal à la place et pas mes données. Donc, je crée une variable statique et stocke toutes les données récupérées, ce qui est fait à l'intérieur de la fonction de soumission en passant. Lorsque j'ai vérifié cette variable dans le rappel de menu, cette variable n'est pas définie.
Pour résumer mon problème, la forme a différentes URL d'accès que la forme soumettre, comme
Form url – http://....?q=mymodule/form
Submit url (value of ”#action”) – http://....?q=mymodule/execute
, et les données que j'ai mis en fonction à l'intérieur soumettre variable statique n'est pas disponible dans le rappel de menu. Comment puis-je rendre les données disponibles?
est ici une partie de mon code -
static $retrieved_data;
function mymodule_menu() {
$command = array();
$command['mymodule/form'] = array(
'title' => 'user input',
'page callback' => 'response',
'page arguments' => array('form'),
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
);
$command['mymodule/execute'] = array(
'title' => 'Search',
'page callback' => 'response',
'page arguments' => array('execute'),
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
);
return $command;
}
function _response($paRequest){
switch($paRequest){
case "form":
return drupal_get_form("_myform");
break;
case "execute":
return $retrieved_data;
break;
}
}
function _myform(&$form_state) {
$form['#action'] = url($base_path)."?mymodule/execute";
.....
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
'#submit' => array('_data_retrieve'),
);
return $form;
}
function _data_retrieve($form, &$form_state){
/*data retrieval code*/
........................
$retrieved_data = db_fetch_object($result);
}
Merci un bouquet
J'ai la même suggestion d'utiliser la base de données pour stocker des données de formulaire dans le support drupal. Je pensais que je pourrais travailler autour de l'utilisation de la base de données par variable statique afin de ne pas surcharger l'accès à la base de données. Je suppose pas alors. Merci pour la suggestion. Je verrai comment cela fonctionne et je reviendrai vers vous. – Andrew