Який правильний спосіб отримати весь $ _POST?


26

У Joomla! 2.5.x Я міг би просто бігати, JRequest::get('post');але бачу, як JRequestу Joomla застаріло! 3.x я повинен використовувати JInput.

На даний момент це код, який я використовую для отримання цілого $_POST:

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

Але це здається досить громіздким, і я стикаюся з проблемами, якщо використовувати їх спільно з, $app->input->set();я думаю, що буде кращий спосіб?

Шукаючи цього, перш ніж я знайшов людей, які казали, що можна просто бігати

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

Але коли я спробував це, я просто отримав екземпляр JInputоб'єкта.


Відповіді:


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

Це шлях, ви отримаєте об'єкт JInput і зможете використовувати його як JRequest

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

Фільтр може бути "int", "cmd" або багато інших - повний список можна знайти в цій функції: https://github.com/joomla/joomla-cms/blob/a3df15f1ddad6d9051d53f939b6afd2f5fca60b7/libraries/joomla/filter/input .php # L138

Якщо ви хотіли б лише масив, тоді ви можете це зробити

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

Але вам слід уникати цього стилю доступу до даних користувачів без фільтрування.


1
Часто мені потрібно отримати цілий, $_POSTфактично не знаючи назв вар, які мені потрібно отримати, тому використання JInputподібного об'єкта у багатьох випадках не корисне. Все-таки хороша відповідь, хоча.
Spunkie

2
Як FYI, $app->input->post->getArray();діє лише в Joomla 3.2.0 і пізніших версіях. І в будь-якій більш ранній версії (включаючи 2.5), яку вам доведеться використовувати$app->input->getArray($_POST)
Джордж Вілсон,

3

Здається, ще один спосіб досягти цього - просто пропустити порожній масив:

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

Це дозволить отримати все в JInputvar даних, як якщо б ви зверталися до $_REQUESTсупер.

У Joomla це не працює! 2.5.x версія, JInputхоча.


-3

Сподіваюся, це спрацює,

JRequest :: get ('пост');

Це допоможе вам отримати дані з еквівалента $ _POST у PHP.


2
Питання чітко говорить про те, що цей метод застарілий, тому ОП шукає оновлений метод за допомогою JInput.
Девід Фрітш

@Harald Ви проти зачистити цю відповідь своїми спеціальними привілеями? Цей користувач, здається, "давно минув".
mickmackusa
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.