Symfony 2.2
Diese Lösung ist seit 2.3 veraltet und wird in 3.0 entfernt, siehe Dokumentation
$form->getData();
gibt Ihnen ein Array für die Formularparameter
aus dem symfony2-Buch Seite 162 (Kapitel 12: Formulare)
[...] Manchmal möchten Sie möglicherweise nur ein Formular ohne Klasse verwenden und ein Array der übermittelten Daten zurückerhalten. Das ist eigentlich ganz einfach:
public function contactAction(Request $request) {
$defaultData = array('message' => 'Type your message here');
$form = $this->createFormBuilder($defaultData)
->add('name', 'text')
->add('email', 'email')
->add('message', 'textarea')
->getForm();
if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
// data is an array with "name", "email", and "message" keys
$data = $form->getData();
}
// ... render the form
}
Sie können auch direkt über das Anforderungsobjekt auf POST-Werte (in diesem Fall "Name") zugreifen, wie folgt:
$this->get('request')->request->get('name');
Beachten Sie jedoch, dass in den meisten Fällen die Verwendung der Methode getData () die bessere Wahl ist, da die Daten (normalerweise ein Objekt) zurückgegeben werden, nachdem sie vom Formularframework transformiert wurden.
Wenn Sie auf das Formular-Token zugreifen möchten, müssen Sie die Antwort von Problematic verwenden,
$postData = $request->request->get('contact');
da getData()
das Element aus dem Array entfernt wird
Symfony 2.3
seit 2.3 solltest du verwenden handleRequest
statt bindRequest
:
$form->handleRequest($request);
siehe Dokumentation
Die Post-Werte des Formulars werden in der Anforderung unter dem Namen des Formulars gespeichert. Wenn Sie beispielsweise die
getName()
Methode von ContactType () überschrieben haben , um "contact" zurückzugeben, gehen Sie folgendermaßen vor:Wenn Sie immer noch Probleme haben, versuchen Sie ein tun
var_dump()
auf$request->request->all()
alle die Postwerte zu sehen.quelle
getName()
, ist es sinnvoll, Namen nicht fest zu codieren:$request->request->get($form->getName());
Was für mich funktioniert hat, war Folgendes:
quelle
Es gibt einen Trick mit der
ParameterBag::get()
Methode. Sie können einstellen ,$deep
Parameter zutrue
und Zugriff auf den erforderlichen tiefen verschachtelten Wert ohne zusätzlichen Variable:Sie haben auch die Möglichkeit, einen Standardwert (2. Parameter der
get()
Methode) festzulegen, um redundanteisset($form['some']['deep']['data'])
Aufrufe zu vermeiden .quelle
Auf die Felddaten kann in einer Steuerung zugegriffen werden mit: Listing 12-34
Darüber hinaus können die Daten eines nicht zugeordneten Felds auch direkt geändert werden: Listing 12-35
Seite 164 symfony2-Buch (erstellt am 9. Oktober 2013)
quelle
Ich greife auf folgende Weise auf den Parameter ticketNumber für meine mehrteilige Post-Anfrage zu.
quelle
Ich denke, um die Anforderungsdaten zu erhalten, die vom Formularobjekt gebunden und validiert werden, müssen Sie Folgendes verwenden:
$form->getClientData();
quelle
Symfony- Dokument zum Abrufen von Anforderungsdaten
$ content = $ request-> getContent ();
quelle
Wenn Sie ein Neuling sind, begrüßen Sie Symfony2, ein Open-Source-Projekt. Wenn Sie also viel lernen möchten, können Sie die Quelle öffnen!
Aus "Form.php":
getData () getNormData () getViewData ()
Weitere Details finden Sie in dieser Datei.
quelle
$form->getData();
ich weiß, dass die Leute faul sind und eine Lösung wollen, ohne ein bisschen nachzudenken ;-(