ti-enxame.com

Qual é a maneira correta de obter todo o $ _POST?

No Joomla! 2.5.x Eu poderia simplesmente executar JRequest::get('post');, mas ver como JRequest está obsoleto no Joomla! 3.x eu devo usar JInput.

No momento, esse é o código que estou usando para obter todo o $_POST:

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

Mas isso parece bastante complicado e eu encontro problemas se usado em conjunto com $app->input->set(); Eu pensaria que haveria uma maneira melhor?

Ao pesquisar isso antes de encontrar pessoas dizendo que você pode simplesmente executar

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

Mas quando tentei isso, simplesmente obtive uma instância do objeto JInput.

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

É o caminho a percorrer, você receberá um objeto JInput e poderá usá-lo como o JRequest

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

O filtro pode ser 'int', 'cmd' ou muitos outros - a lista completa pode ser encontrada nesta função: https://github.com/joomla/joomla-cms/blob/a3df15f1ddad6d9051d53f939b6afd2f5fca60b7/libraries/joomla /filter/input.php#L138

Se você quiser apenas a matriz, poderá fazer

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

Mas você deve evitar esse estilo de acessar dados do usuário sem filtrar.

31
Harald Leithner

Parece que outra maneira de conseguir isso é simplesmente passar uma matriz vazia:

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

Isso recuperará tudo no JInput data var como se você estivesse acessando o $_REQUEST super.

Isso não funciona no Joomla! Versão 2.5.x de JInput embora.

3
Spunkie