Ich ajaxly eine Route aufrufen und übergeben Daten an sie, in meinem Controller, ich will bekommen $_POST['var']
, $_POST['var2']
scheint es wegen der Verwendung von HttpFoundation in Drupal 8, $_POST
und $_GET
sind existiert nicht in die alte Methode, wie ich Zugriff auf $_POST
Parameter in benutzerdefinierten - Controller?
21
Antworten:
Aus dem Änderungssatz :
wird
Übrigens
GET
würden Sie für vars Folgendes verwenden:quelle
\Drupal::request()->request->all()
In einem Controller erhalten Sie die Anfrage mit einem typenbezogenen Argument
Request $request
:Weitere Informationen https://www.drupal.org/docs/8/api/routing-system/using-parameters-in-routes
quelle
Injizieren Sie die
RequestStack
in Ihren Controller.Die aktuelle Anforderung enthält das
query
Attribut, das wiederum die GET-Parameter enthält.request
enthält die POST-Parameter.quelle
Sie können das Request-Objekt wie folgt überprüfen
es wird GET oder POST oder was auch immer zurückgeben. Wenn Sie in einem Objekt arbeiten, denken Sie daran, DI den Anforderungsdienst.
quelle
Wenn Sie verwenden
Content-Type: application/json
, verwenden Sie bitte:quelle
Keine der anderen Antworten funktionierte für mich, aber ich fand das, das tat:
quelle
Im folgenden Beispiel wird auf URL-Parameter zugegriffen und diese an eine TWIG-Vorlage übergeben. Ich gehe davon aus, dass Sie Ihr Modul und die erforderlichen Dateien bereits erstellt haben und dass "/ test? Fn = admin" Ihre URL ist
Erstellen Sie nun Ihren Controller und geben Sie den folgenden Code ein.
Jetzt können Sie in Ihrer TWIG-Datei, die "my-template.html.twig" sein sollte, auf diesen Parameter zugreifen als:
Und es ist geschafft. Hoffe das hilft.
quelle