Submitted by Milola on
Bonjour,
J'ai sur la page principale de mon module une variable contenant un tableau de données que je souhaiterais mettre en paramètre dans les liens que j'ai sur cette page. Mais est-ce possible?
Concrètement mes liens sont de cette forme :
<?php
$output = l(t('CSV Export'), "node/$node->nid/submission/$submission->sid/export_csv") . '<br/>' . $output;
$output = l(t('txt Export'), "node/$node->nid/submission/$submission->sid/export_txt") . '<br/>' . $output;
?>
J'arrive donc à faire passer via l'url des objets :
<?php
function dsa_menu() {
$items = array();
// (...)
$items['node/%webform_menu/submission/%webform_menu_submission/export_csv'] = array(
'title' => 'Export CSV',
'load arguments' => array(1),
'page callback' => 'dsa_export_csv',
'page arguments' => array(1, 3),
'access arguments' => array(true),
'file' => 'includes/dsa.inc',
'type' => MENU_CALLBACK,
);
$items['node/%webform_menu/submission/%webform_menu_submission/export_txt'] = array(
'title' => 'Export txt',
'load arguments' => array(1),
'page callback' => 'dsa_export_txt',
'page arguments' => array(1, 3),
'access arguments' => array(true),
'file' => 'includes/dsa.inc',
'type' => MENU_CALLBACK,
);
return $items;
}
?>
Seulement j'ai maintenant ma variable $tableau que j'aimerais ajouter en paramètre d'entré à mes fonctions dsa_export_csv et dsa_export_txt !
Je ne me vois pas passer le contenu de ma variable via l'url, et j'ai beau avoir regardé dans les modules existants ou sur le net je n'ai pas trouvé de solution, j'espère que vous pourrez m'aider.
Amicalement,
as tu essayé
Permalien Soumis par ced_sdml le 10 Juillet, 2012 - 13:44
as tu essayé ceci:
à tester.
++
Et bien je ne vois pas trop
Permalien Soumis par Milola le 10 Juillet, 2012 - 16:17
Et bien je ne vois pas trop comment utiliser cela, j'ai lu la doc de http://api.drupal.org/api/drupal/includes%21common.inc/function/l/7 et http://api.drupal.org/api/drupal/includes%21common.inc/function/url/7 mais concrètement... est-ce que cela implique des modifications dans le hook_menu et dans les paramètres de la fonction appelée?
Si non cela ne marche pas ("Drupal a rencontré un problème blabla..").
D'après ce que j'ai compris l'option querry de url() permet d'encoder la variable pour la faire passer dans l'url. Le problème de ma variable c'est qu'elle contient un tableau, déjà je doute que cela puisse passer par l'url et de plus cela donnerait une url très longue! (sans parler des problèmes de sécurité?)
je l ai fait avec un
Permalien Soumis par ced_sdml le 10 Juillet, 2012 - 16:24
je l ai fait avec un drupal_goto("mon_chemin",array('query'=>$tableau));
et ça marche, c'est pour cela que je te proposais la même syntaxe dans le l().
bien sur il faut crypter les données avant avec par exemple openssl_encrypt().
je regarde si ce n est pas un pb de syntaxe sur l'option du l().
++
Est-ce que cela implique des
Permalien Soumis par Milola le 11 Juillet, 2012 - 09:48
Est-ce que cela implique des modifications dans le hook_menu et dans les paramètres de la fonction appelée ? Une variable à rajouter en paramètre d'entrée?
non aucune modif tu devrais
Permalien Soumis par ced_sdml le 11 Juillet, 2012 - 10:05
non aucune modif tu devrais récupérer tes données dans le $_GET['q'].
faut tester en mettant des dpm().
++
Ok pour que ça marche il
Permalien Soumis par Milola le 11 Juillet, 2012 - 12:36
Ok pour que ça marche il fallait mettre
Car query demande un tableau.
Merci pour ta piste ced, cependant je ne suis pas convaincu par un envoi avec la méthode GET, je ne suis pas sûr que ça soit la solution la plus optimale (surtout si je veux faire passer des conditions de tri sur ma bdd pour l'exportation, niveau sécurité...!).
N'est-il pas possible de passer la variable en paramètre de la fonction qui sera chargée lors de l'affichage d'une nouvelle page ?
la tu me pose une colle
Permalien Soumis par ced_sdml le 11 Juillet, 2012 - 14:50
la tu me pose une colle lol.
autre méthode mais j suis pas sur que ce soit top serait d'envoyer ton tableau dans un variable_set de récupérer cette variable après (variable_get). Sans oublier de vider la variable après traitement.
De plus ça obllige de créer une variable dans le hook_preprocess_page mais du coup il n y a plus de passage en GET.
Up, problème toujours
Permalien Soumis par Milola le 16 Juillet, 2012 - 09:33
Up, problème toujours d'actualité !