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.


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.


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.


-3

Hoffe, das wird funktionieren,

JRequest :: get ('post');

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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.