Qual è il modo corretto per ottenere l'intero $ _POST?


26

In Joomla! 2.5.x Potrei semplicemente correre JRequest::get('post');ma visto che JRequestè deprecato in Joomla! 3.x Dovrei usare JInput.

Al momento questo è il codice che sto usando per ottenere l'intero $_POST:

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

Ma questo sembra piuttosto ingombrante e incappare in problemi se usato insieme $app->input->set();penserei che ci sarebbe un modo migliore?

Durante la ricerca di questo prima ho trovato persone che dicevano che puoi semplicemente correre

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

Ma quando ho provato questo ho semplicemente ottenuto un'istanza JInputdell'oggetto.


Risposte:


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

È la strada da percorrere, otterrai un oggetto JInput e puoi usarlo come JRequest

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

Il filtro potrebbe essere 'int', 'cmd' o molti altri - l'elenco completo è disponibile in questa funzione: https://github.com/joomla/joomla-cms/blob/a3df15f1ddad6d9051d53f939b6afd2f5fca60b7/libraries/joomla/filter/input .php # L138

Se desideri solo l'array, puoi farlo

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

Ma dovresti evitare questo stile di accesso ai dati utente senza filtro.


1
Spesso ho bisogno di ottenere il tutto $_POSTsenza conoscere effettivamente i nomi delle variabili che devo ottenere, ecco perché usare l' JInputoggetto in quel modo non è utile in molti casi. Comunque una buona risposta però.
Spunkie,

2
Come un FYI $app->input->post->getArray();è valido solo su Joomla 3.2.0 e versioni successive. E in qualsiasi versione precedente (inclusa la 2.5) devi usare$app->input->getArray($_POST)
George Wilson,

3

Sembra un altro modo per ottenere ciò è semplicemente passare un array vuoto:

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

Ciò recupererà tutto nei JInputvar di dati come se si stesse accedendo al $_REQUESTsuper.

Questo non funziona in Joomla! 2.5.x versione di JInputperò.


-3

Spero che questo funzioni,

JRequest :: get ( 'post');

Questo ti aiuterà a recuperare i dati da $ _POST equivalente in PHP.


2
La domanda dice chiaramente che questo metodo è deprecato, quindi OP sta cercando il metodo aggiornato usando JInput.
David Fritsch,

@Harald ti dispiacerebbe eliminare questa risposta con i tuoi privilegi speciali? Questo utente sembra essere "scomparso".
Mickmackusa
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.