web-dev-qa-db-fra.com

Quelle est la bonne façon d'obtenir le $ _POST complet?

Dans Joomla! 2.5.x Je pourrais simplement exécuter JRequest::get('post'); mais voir JRequest est obsolète dans Joomla! 3.x je devrais utiliser JInput.

En ce moment, c’est le code que j’utilise pour obtenir l’ensemble du $_POST:

$app = JFactory::getApplication();
$postData = $app->input->getArray(array_flip(array_keys($_POST)));

Mais cela semble plutôt encombrant et je rencontre des problèmes s’il est utilisé conjointement avec $app->input->set();, je pense qu’il y aurait un meilleur moyen?

Lors de la recherche de ceci avant que je trouve des personnes en disant que vous pouvez simplement courir

$app = JFactory::getApplication();
$postData = $app->input->post;

Mais lorsque j'ai essayé cela, j'ai simplement obtenu une instance de l'objet JInput.

26
Spunkie
$app = JFactory::getApplication();
$postData = $app->input->post;

Est le chemin à parcourir, vous obtiendrez un objet JInput et pourrez l'utiliser comme JRequest

$var = $postData->get('varname', 'defaultvalue', 'filter');

Le filtre peut être 'int', 'cmd' ou beaucoup d'autres. La liste complète se trouve dans cette fonction: https: //github.com/joomla/joomla-cms/blob/a3df15f1ddad6d9051d53f939b6afd2f5f5fca60b7/lib/joomla /filter/input.php#L138

Si vous voulez seulement le tableau, alors vous pouvez faire

$array = $app->input->post->getArray();

Mais vous devriez éviter ce style d'accès aux données utilisateur sans filtrage.

31
Harald Leithner

Il semble qu'une autre façon d'y parvenir consiste simplement à passer un tableau vide:

$app = JFactory::getApplication();
$postData = $app->input->getArray(array());

Ceci récupérera tout dans la variable JInput comme si vous accédiez au super $_REQUEST.

Cela ne fonctionne pas dans le Joomla! Version 2.5.x de JInput cependant.

3
Spunkie