Apa cara yang tepat untuk mendapatkan $ _POST secara keseluruhan?

26

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

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

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

Tapi ini sepertinya 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 JInputobjek.

Spunkie
sumber

Jawaban:

31
$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/libraries/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 ini tanpa pemfilteran.

Harald Leithner
sumber
1
Sering kali saya perlu mendapatkan keseluruhan $_POSTtanpa benar-benar mengetahui nama-nama vars yang perlu saya dapatkan, itu sebabnya menggunakan JInputobjek seperti itu tidak berguna dalam banyak kasus. Masih jawaban yang bagus.
Spunkie
2
Sebagai FYI, $app->input->post->getArray();ini hanya berlaku di Joomla 3.2.0 dan yang lebih baru. Dan dalam versi sebelumnya (termasuk 2.5) Anda harus menggunakan$app->input->getArray($_POST)
George Wilson
3

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 JInputdata var seolah-olah Anda sedang mengakses $_REQUESTsuper.

Ini tidak berfungsi di Joomla! Versi 2.5.x dari JInputsekalipun.

Spunkie
sumber
-3

Semoga ini berhasil,

JRequest :: get ('post');

Ini akan membantu Anda untuk mengambil data dari $ _POST setara dalam PHP.

goggler
sumber
2
Pertanyaannya dengan jelas mengatakan bahwa metode ini sudah usang, jadi OP sedang mencari metode yang diperbarui menggunakan JInput.
David Fritsch
@ Harald maukah kau membersihkan jawaban ini dengan hak istimewa khususmu? Pengguna ini tampaknya "sudah lama".
mickmackusa