it-swarm-eu.dev

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

In Joomla! 2.5.x Potrei semplicemente eseguire 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 mi imbatto in problemi se usato insieme a $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 dell'oggetto JInput.

26
Spunkie
$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 può 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.

31
Harald Leithner

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

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

Ciò recupererà tutto nei dati JInput come se si stesse accedendo a $_REQUEST super.

Questo non funziona in Joomla! Versione 2.5.x di JInput però.

3
Spunkie