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.


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.


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.


-3

Semoga ini berhasil,

JRequest :: get ('post');

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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.