Faire passer une variable d'une page à une autre. Est-ce possible?

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 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,

Forum : 
Version de Drupal : 

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 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().

++

Ok pour que ça marche il fallait mettre

<?php
  $output
= l(t('CSV Export'), "node/$node->nid/submission/$submission->sid/export_csv", array('query' => array ('var' => $variable_a_extraire))) . '<br/>' . $output;
?>

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 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.