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


26

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

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

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

Mas isso parece bastante complicado e eu me deparo com problemas se usado em conjunto com $app->input->set();eu acho 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 JInputobjeto.


Respostas:


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

É o caminho a percorrer, você receberá um objeto JInput e poderá usá-lo como 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.


11
Muitas vezes, eu preciso obter o inteiro $_POSTsem realmente saber os nomes dos vars que preciso obter, é por isso que o uso desse JInputobjeto não é útil em muitos casos. Ainda é uma boa resposta.
Spunkie

2
Como FYI The $app->input->post->getArray();só é válido no Joomla 3.2.0 e posterior. E em qualquer versão anterior (incluindo a 2.5) você precisa usar$app->input->getArray($_POST)
George Wilson

3

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

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

Isso recuperará tudo no JInputvar de dados como se você estivesse acessando o $_REQUESTsuper.

Isso não funciona no Joomla! Versão 2.5.x do JInputembora.


-3

Espero que isso funcione,

JRequest :: get ('post');

Isso o ajudará a buscar os dados do equivalente a $ _POST no PHP.


2
A pergunta diz claramente que esse método está obsoleto; portanto, o OP está procurando o método atualizado usando o JInput.
David Fritsch

@ Harald, você se importaria de eliminar esta resposta com seus privilégios especiais? Este usuário parece ter "desaparecido".
Mickmackusa
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.