web-dev-qa-db-fra.com

Utiliser les variables POST et GET dans Joomla

Donc, mon problème est que j'utilise Joomla et, dans mes articles, j'utilise le plug-in Sourcerer pour pouvoir utiliser PHP dans mes articles. Jusqu'à présent, tout a été assez simple - -Je poste les données de formulaire sur un script PHP et les requêtes sont exécutives. Rien de spécial.

Toutefois; J'aimerais publier les données d'un article de Joomla et les insérer dans un autre. C'est à dire. Sélectionnez un utilisateur dans un formulaire d'un article, publiez ces données, redirigez-les vers un autre article, récupérez les données précédemment publiées et mettez les informations dans un tableau.

Il n'est pas nécessaire que ce soit un article - même un module HTML personnalisé ou un module tiers fonctionnerait; mais jusqu'à présent, je n'ai pas eu beaucoup de chance de trouver quelque chose qui convienne. J'essaie simplement d'éviter d'avoir une page complètement séparée pour cette chose, et j'aimerais garder la mise en page du site Web aussi uniforme que possible.

2
theCowardlyFrench

Pour obtenir des données de formulaire dans Joomla, vous pouvez utiliser:

$jinput = JFactory::getApplication()->input;

Pour obtenir une valeur de JInput, vous pouvez utiliser:

$foo = $jinput->get('varname', 'default_value', 'filter');

Vérifiez ci-dessous l'URL pour plus de détails:
https://docs.joomla.org/Retrieving_request_data_using_JInput

3
Lokendra Joshi

Il serait préférable de poster du code plutôt que de le lier à une référence externe. J'ai essayé de répondre au message de XWS, mais il est difficile d'y ajouter du code formaté, d'où mon propre message. Donc, pour utiliser JSession pour définir une variable:

$foo = 'bar';
$session = JFactory::getSession();
$session->set('path.to.my.variable', $foo);

// Retrieve the stored value (could be a different file on a different page request)
$foo = $session->get('path.to.my.variable');
echo $foo; // outputs 'bar'

Notez qu'en utilisant un chemin de nom en pointillé, vous créez en fait un tableau imbriqué dans le fichier global $ _SESSION de PHP. Cela est pratique lorsque vous souhaitez définir un tableau en tant que variable de session:

$foo = array('foo' => 'bar', 'foofoo' => array('me' => 'you'));
$session = JFactory::getSession();
$session->set('path.to.my.variable', $foo);

echo $session->get('path.to.my.variable.foo'); // outputs 'bar'
echo $session->get('path.to.my.variable.foofoo.me'); // outputs 'you'

Les exemples ci-dessus utilisent l'espace de noms de session par défaut. Vous pouvez également utiliser votre propre espace de noms. Dans l'exemple ci-dessous, j'utilise "myNameSpace" comme nom d'espace de nom:

$foo = 'bar';
$session = JFactory::getSession();
$session->set('path.to.my.variable', $foo, 'myNameSpace');

// Retrieve
$foo = $session->get('path.to.my.variable', 'default', 'myNameSpace');
echo $foo; // outputs 'bar'

Enfin, moomoochoo a suggéré d'utiliser Memcache comme substitut. Je n'ai pas vu de problème avec JSession, mais sachez que la classe JSession englobe plusieurs options de stockage différentes. La valeur par défaut est de stocker dans la base de données MySQL, mais vous disposez également des pilotes apc, memcache, wincache et xcache. Donc, si vous avez quelque chose comme Memcache installé, vous pouvez le sélectionner comme option de stockage JSession dans la page de configuration globale de Joomla, option de menu déroulant de l'onglet "Système du gestionnaire de session".

2
Rob Clayburn

Comme Lodder et XWS l’ont déjà dit, les sessions Joomla feront ce que vous voulez. J'ai eu beaucoup de problèmes avec les sessions Joomla, alors je vais suggérer des alternatives. Vous pouvez utiliser Redis ou Memcached (ou quelque chose de similaire) pour stocker et récupérer des valeurs en utilisant PHP. Ce sont des solutions côté serveur plutôt que basées sur Joomla et sont probablement excessives pour ce que vous voulez.

1
TryHarder

Utilisez Sessions Vars. Comme Sourcerer vous permet de lancer PHP avec un article, voir:

https://docs.joomla.org/JFactory/getSession

Vous pouvez définir la session pour l'utilisateur actuel. Stockez la variable, puis revenez à la nouvelle page, récupérez-la si elle existe.

1
tonypartridge