Quelle est la bonne façon d'obtenir l'intégralité de $ _POST?

26

À Joomla! 2.5.x Je pourrais simplement courir JRequest::get('post');mais vu que JRequestc'est obsolète dans Joomla! 3.x je devrais utiliser JInput.

En ce moment, c'est le code que j'utilise pour obtenir l'intégralité $_POST:

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

Mais cela semble plutôt lourd et je rencontre des problèmes s'il est utilisé conjointement avec $app->input->set();je pense qu'il y aurait une meilleure façon?

Lors de la recherche de cela avant, j'ai trouvé des gens disant que vous pouvez simplement exécuter

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

Mais quand j'ai essayé cela, j'ai simplement obtenu une instance de l' JInputobjet.

Spunkie
la source

Réponses:

31
$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 bien d'autres - la liste complète peut être trouvée dans cette fonction: https://github.com/joomla/joomla-cms/blob/a3df15f1ddad6d9051d53f939b6afd2f5fca60b7/libraries/joomla/filter/input .php # L138

Si vous souhaitez uniquement le tableau, vous pouvez le faire

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

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

Harald Leithner
la source
1
Souvent, j'ai besoin d'obtenir l'intégralité $_POSTsans vraiment connaître le nom des variables que j'ai besoin d'obtenir, c'est pourquoi l'utilisation de cet JInputobjet n'est pas utile dans de nombreux cas. C'est quand même une bonne réponse.
Spunkie
2
En tant que FYI The $app->input->post->getArray();n'est valable que sur Joomla 3.2.0 et versions ultérieures. Et dans toute version antérieure (y compris 2.5), vous devez utiliser$app->input->getArray($_POST)
George Wilson
3

Il semble qu'une autre façon d'accomplir cela soit de simplement passer un tableau vide:

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

Cela récupérera tout dans la JInputvariable de données comme si vous accédiez au $_REQUESTsuper.

Cela ne fonctionne pas dans Joomla! Version 2.5.x de JInputbien.

Spunkie
la source
-3

J'espère que cela fonctionnera,

JRequest :: get ('post');

Cela vous aidera à récupérer les données de l'équivalent $ _POST en PHP.

goggler
la source
2
La question indique clairement que cette méthode est obsolète, donc OP recherche la méthode mise à jour à l'aide de JInput.
David Fritsch
@Harald cela vous dérangerait de purger cette réponse avec vos privilèges spéciaux? Cet utilisateur semble "disparu depuis longtemps".
mickmackusa