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.


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.


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.


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


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.