it-swarm-id.com

Apa cara yang tepat untuk mendapatkan $ _POST secara keseluruhan?

Di Joomla! 2.5.x Saya bisa menjalankan JRequest::get('post'); tetapi melihat JRequest sudah usang di Joomla! 3.x Saya harus menggunakan JInput.

Pada saat ini, ini adalah kode yang saya gunakan untuk mendapatkan seluruh $_POST:

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

Tapi ini tampaknya agak rumit dan saya mengalami masalah jika digunakan bersama dengan $app->input->set(); Saya akan berpikir akan ada cara yang lebih baik?

Saat mencari ini sebelum saya menemukan orang-orang mengatakan Anda bisa lari

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

Tetapi ketika saya mencoba ini saya hanya mendapatkan contoh dari objek JInput.

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

Apakah cara untuk pergi, Anda akan mendapatkan objek JInput dan dapat menggunakannya seperti JRequest

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

Filter dapat berupa 'int', 'cmd' atau banyak lainnya - daftar lengkap dapat ditemukan dalam fungsi ini: https://github.com/joomla/joomla-cms/blob/a3df15f1ddad6d9051d53f939b6afd2f5fca60b7/ perpustakaan/joomla/filter/input.php # L138

Jika Anda hanya ingin array, maka Anda bisa melakukannya

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

Tetapi Anda harus menghindari gaya mengakses data pengguna tanpa pemfilteran.

31
Harald Leithner

Tampaknya cara lain untuk mencapainya adalah dengan mengirimkan array kosong:

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

Ini akan mengambil semua yang ada di JInput data var seolah-olah Anda sedang mengakses $_REQUEST super.

Ini tidak berfungsi di Joomla! Versi 2.5.x JInput meskipun.

3
Spunkie