¿Cuál es la forma correcta de obtener todo el $ _POST?

26

En Joomla! 2.5.x Podría simplemente ejecutar, JRequest::get('post');pero ya que JRequestestá en desuso en Joomla! 3.x debería usar JInput.

En este momento, este es el código que estoy usando para obtener todo $_POST:

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

Pero esto parece bastante engorroso y me encuentro con problemas si se usa junto con $app->input->set();creo que habría una mejor manera.

Al buscar esto antes, he encontrado personas que dicen que simplemente puedes ejecutar

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

Pero cuando probé esto, simplemente obtuve una instancia del JInputobjeto.

Spunkie
fuente

Respuestas:

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

Es el camino a seguir, obtendrá un objeto JInput y puede usarlo como JRequest

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

El filtro podría ser 'int', 'cmd' o muchos otros; la lista completa se puede encontrar en esta función: https://github.com/joomla/joomla-cms/blob/a3df15f1ddad6d9051d53f939b6afd2f5fca60b7/libraries/joomla/filter/input .php # L138

Si solo desea la matriz, entonces puede hacer

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

Pero debe evitar este estilo de acceder a los datos del usuario sin filtrar.

Harald Leithner
fuente
1
Muchas veces necesito obtener todo $_POSTsin saber realmente los nombres de los vars que necesito obtener, es por eso que usar el JInputobjeto así no es útil en muchos casos. Sin embargo, sigue siendo una buena respuesta.
Spunkie
2
Como FYI The $app->input->post->getArray();solo es válido en Joomla 3.2.0 y posterior. Y en cualquier versión anterior (incluida la 2.5) debe usar$app->input->getArray($_POST)
George Wilson,
3

Parece que otra forma de lograr esto es simplemente pasar una matriz vacía:

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

Esto recuperará todo en la JInputvar de datos como si estuvieras accediendo al $_REQUESTsuper.

Esto no funciona en Joomla! Versión 2.5.x de JInputaunque.

Spunkie
fuente
-3

Espero que esto funcione

JRequest :: get ('post');

Esto lo ayudará a obtener los datos del equivalente de $ _POST en PHP.

goggler
fuente
2
La pregunta dice claramente que este método está en desuso, por lo que OP está buscando el método actualizado utilizando JInput.
David Fritsch
@Harald, ¿te importaría purgar esta respuesta con tus privilegios especiales? Este usuario parece estar "desaparecido".
mickmackusa