$ _POST'un tamamını almanın doğru yolu nedir?


26

Joomla'da! 2.5.x Sadece koşabilirim JRequest::get('post');ama JRequestJoomla! 3.x kullanmalıyım JInput.

Onları şu anda bu bütün almak için kullanıyorum kodu $_POST:

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

Ama bu oldukça zahmetli görünüyor ve birlikte kullanıldığında $app->input->set();daha iyi bir yol olacağını düşünürsem sorunlarla karşılaşıyorum ?

Bunu ararken, daha önce koşabileceğini söyleyen insanları buldum.

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

Ama bunu denediğimde, basitçe JInputnesnenin bir örneğini aldım .


Yanıtlar:


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

Gidiş yolu, JInput nesnesini alacak ve JRequest gibi kullanabilirsiniz

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

Filtre 'int', 'cmd' veya diğerleri olabilir - listenin tamamı bu işlevde bulunabilir: https://github.com/joomla/joomla-cms/blob/a3df15f1ddad6d9051d53f939b6afd2f5fca60b7/libraries/joomla/filputinfilo .php # L138

Sadece diziyi istersen, yapabilirsin.

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

Ancak , filtreleme yapmadan bu kullanıcı verilerine erişme tarzından kaçınmalısınız .


1
Çoğu zaman, almam gereken $_POSTvarsların isimlerini gerçekten bilmeden hepsini elde etmem gerekir, bu yüzden JInputnesneyi böyle kullanmak pek çok durumda işe yaramaz. Yine de olsa iyi bir cevap.
Spunkie

2
FYI $app->input->post->getArray();olarak Sadece Joomla 3.2.0 ve sonraki sürümlerinde geçerlidir. Ve daha önceki sürümlerde (2.5 dahil) kullanmak zorundasınız$app->input->getArray($_POST)
George Wilson

3

Bunu başarmanın başka bir yolu, boş bir diziden geçmek.

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

Bu, JInputverilerdeki her şeyi, sanki üst siteye erişiyormuşçasına alır $_REQUEST.

Bu Joomla'da çalışmıyor! JInputYine de 2.5.x sürümü .


-3

Umarım bu işe yarar.

JRequest :: get ( 'sonrası');

Bu, PHP'deki $ _POST eşdeğerindeki verileri getirmenize yardımcı olacaktır.


2
Soru açıkça bu yöntemin kullanımdan kaldırıldığını söylüyor, dolayısıyla OP JInput kullanarak güncellenmiş yöntemi arıyor.
David Fritsch

@Halld bu cevabı özel ayrıcalıklarınızla tasfiye eder misiniz? Bu kullanıcı "çoktan gitti" gibi görünüyor.
mickmackusa
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.