Was ist der richtige Weg, um den gesamten $ _POST zu bekommen?

26

In Joomla! 2.5.x Ich könnte einfach laufen JRequest::get('post');, sehe aber, wie JRequestes in Joomla veraltet ist! 3.x sollte ich verwenden JInput.

Im Moment ist dies der Code, mit dem ich das Ganze bekomme $_POST:

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

Aber das scheint ziemlich umständlich und ich stoße auf Probleme, wenn $app->input->set();ich in Verbindung mit denke, dass es einen besseren Weg geben würde?

Wenn ich danach suche, bevor ich Leute finde, die sagen, du kannst einfach rennen

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

Aber als ich das ausprobierte, bekam ich einfach eine Instanz des JInputObjekts.

Spunkie
quelle

Antworten:

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

Ist der Weg zu gehen, erhalten Sie ein JInput-Objekt und können es wie JRequest verwenden

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

Der Filter kann "int", "cmd" oder viele andere sein - die vollständige Liste finden Sie in dieser Funktion: https://github.com/joomla/joomla-cms/blob/a3df15f1ddad6d9051d53f939b6afd2f5fca60b7/libraries/joomla/filter/input .php # L138

Wenn Sie nur das Array möchten, können Sie dies tun

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

Sie sollten diese Art des Zugriffs auf Benutzerdaten jedoch vermeiden, ohne zu filtern.

Harald Leithner
quelle
1
Oft muss ich $_POSTdas Ganze abrufen, ohne die Namen der Vars zu kennen, die ich abrufen muss. Deshalb JInputist es in vielen Fällen nicht sinnvoll , das Objekt so zu verwenden. Trotzdem eine gute Antwort.
Spunkie
2
Zu Ihrer Information: The $app->input->post->getArray();ist nur für Joomla 3.2.0 und höher gültig. Und in jeder früheren Version (einschließlich 2.5) müssen Sie verwenden$app->input->getArray($_POST)
George Wilson
3

Eine andere Möglichkeit, dies zu erreichen, besteht darin, einfach ein leeres Array zu übergeben:

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

Dadurch wird alles in der JInputDatenvariable abgerufen, als ob Sie auf die $_REQUESTSuper zugegriffen hätten.

Dies funktioniert nicht in der Joomla! 2.5.x Version von JInputobwohl.

Spunkie
quelle
-3

Hoffe, das wird funktionieren,

JRequest :: get ('post');

Dies wird Ihnen helfen, die Daten aus dem Äquivalent $ _POST in PHP abzurufen.

Goggler
quelle
2
Aus der Frage geht eindeutig hervor, dass diese Methode veraltet ist. Daher sucht OP mithilfe von JInput nach der aktualisierten Methode.
David Fritsch
@Harald Würde es Ihnen etwas ausmachen, diese Antwort mit Ihren besonderen Privilegien zu löschen? Dieser Benutzer scheint schon lange nicht mehr zu sein.
Mickmackusa