Ich bin sehr neu in der Symfonie. In anderen Sprachen wie Java und anderen kann request.getParameter('parmeter name')
ich den Wert ermitteln.
Gibt es etwas Ähnliches, das wir mit symfony2 machen können?
Ich habe einige Beispiele gesehen, aber keines funktioniert für mich. Angenommen, ich habe ein Formularfeld mit dem Namen Benutzername . In der Formularaktion habe ich versucht, so etwas zu verwenden:
$request = $this->getRequest();
$username= $request->request->get('username');
Ich habe es auch versucht
$username = $request->getParameter('username');
und
$username=$request->request->getParameter('username');
Aber keine der Optionen funktioniert. Die folgenden Optionen haben jedoch einwandfrei funktioniert:
foreach($request->request->all() as $req){
print_r($req['username']);
}
Wo mache ich Fehler bei der Anwendung der getParameter()
Methode? Jede Hilfe wird geschätzt.
$request->request-get()
sollte sein$request->request->get()
. Könnte das sein?get()
es die richtige Methode ist, und (b) PHP-Hinweise aktiviert, damit Sie feststellen können, ob es Probleme gibt? (c) Verfügt Symfony 2 über eine Debug-Symbolleiste wie Symfony 1, sodass Sie feststellen können, ob Sie Fehler gemacht haben?Antworten:
Die Benennung ist gar nicht so intuitiv:
quelle
$_GET
Daten sind Daten aus der Abfragezeichenfolge (überhaupt keineGET
Anforderung erforderlich) und$_POST
Daten sind Daten aus dem Anforderungshauptteil (muss auch keinePOST
Anforderung sein, könnte es seinPUT
).$request->get
und$request->post
wäre einfacher.Ich mache es noch einfacher:
Eine andere Möglichkeit besteht darin, Ihre Parameter in Ihre Aktionsfunktionsdefinition einzuführen:
Dabei wird davon ausgegangen, dass Sie {foo} und {bar} als Teil Ihres URL-Musters in Ihrer routing.yml-Datei definiert haben:
quelle
foo
Parameter sowohl in der Abfragezeichenfolge als auch im POST-Text habe, von welchem wird dieser zurückgegeben$request->get('foo')
?$request->get('foo');
funktioniert für ALLE Taschen (Reihenfolge ist: PATH, GET, POST). Trotzdem$request->request->get('foo');
funktioniert nur für POST-Tasche. Schließlich wird die erste ($request->get()
) nicht empfohlen, wenn wir wissen, wo sich die Daten befinden (GET / POST).Sie können den folgenden Code verwenden, um Ihre Formularfeldwerte abzurufen
Oder Sie können auch alle Formularwerte als Array abrufen, indem Sie verwenden
quelle
Versuchen
Überprüfen Sie den Attributnamen Ihres Formularfelds
quelle
In einem Controller:
quelle
$this->getRequest()
ist es veraltet, die Anforderung in die Controller-Aktionpublic function showAction(Request $request, $id);
Deine Optionen:
$request->request->get('param')
($_POST['param']
) oder$request->query->get('param')
($_GET['param']
)Weitere Informationen zu
OptionsResolver
- http://symfony.com/doc/current/components/options_resolver.htmlquelle
Da die
$this->getRequest()
Methode jetzt veraltet ist, müssen Sie einRequest
Objekt wie folgt in Ihre Controller-Aktion einfügen:Danach können Sie eine der folgenden Optionen verwenden.
Wenn Sie POST-Daten von der Anforderung abrufen möchten, verwenden Sie Folgendes:
Wenn Sie jedoch GET-Daten von der Anforderung abrufen möchten, verwenden Sie Folgendes:
quelle
Sie können dies folgendermaßen tun:
Wenn die Attribute geschützt sind, können Sie manchmal keinen Zugriff haben, um den Wert für die allgemeine Zugriffsmethode abzurufen:
(POST)
(BEKOMMEN)
(GENERISCH)
quelle
$clientName = $request->query->get('clientName','any');
Die meisten Fälle wie das Abrufen von Abfragezeichenfolgen oder Formularparametern werden in den obigen Antworten behandelt.
Bei der Arbeit mit Rohdaten kann
json_decode()
die MethodeRequest::getContent()
verwendet werden, z. B. eine JSON-Rohzeichenfolge im Hauptteil, der Sie als Argument geben möchten .Weitere nützliche Informationen zu HTTP-Anforderungen in Symfony finden Sie in der Dokumentation des HttpFoundation- Pakets.
quelle
quelle
Request
Parameter nicht haben ? (zB in privaten Funktionen der Controller-Klasse zum Beispiel)Danke, Sie können auch den obigen Code verwenden
quelle
Wenn Sie den Wert von einer Auswahl erhalten möchten, können Sie Folgendes verwenden:
quelle
Versuchen Sie dies, es funktioniert
Grüße
quelle
quelle
Für Benutzer von symfony 4:
quelle
# www.example / register / admin
quelle