Как правильно получить весь $ _POST?

26

В Joomla! 2.5.x Я мог бы просто бежать, JRequest::get('post');но JRequestв Joomla это устарело! 3.х Я должен использовать 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объекта.

Spunkie
источник

Ответы:

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 The $app->input->post->getArray();действителен только на Joomla 3.2.0 и более поздних версиях. И в любой более ранней версии (в том числе 2.5) вы должны использовать$app->input->getArray($_POST)
Джордж Уилсон
3

Кажется, еще один способ сделать это - просто передать пустой массив:

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

Это извлечет все JInputданные из var, как будто вы обращаетесь к $_REQUESTсупер.

Это не работает в Joomla! Версия 2.5.x JInputхотя.

Spunkie
источник
-3

Надеюсь, это сработает,

JRequest :: Get ( 'сообщение');

Это поможет вам получить данные из эквивалента $ _POST в PHP.

goggler
источник
2
Вопрос ясно говорит о том, что этот метод устарел, поэтому OP ищет обновленный метод с использованием JInput.
Дэвид Фрич
@Харальд, не мог бы ты очистить этот ответ своими особыми привилегиями? Этот пользователь, кажется, "давно ушел".
mickmackusa