2017-03-03 2 views
1

Gibt es eine Möglichkeit, zusammengeführte Daten von Request-Klasse zu erhalten? Weil wir derzeit Formulare manuell für einen API-Controller senden, der sowohl POST- als auch GET-Abfragen akzeptiert (dies ist keine REST-API aufgrund eines Legacy-Projekts).Symfony Forms manuelle Übermittlung von GET- und POST-Anfragen

$data = array_merge($request->query->all(), $request->request->all()); 
$form->submit($data); 

Gibt es eine Möglichkeit, etwas sauberer statt Code unten zu schreiben?

$data = array_merge($request->query->all(), $request->request->all()); 

Antwort

1

Ich denke, dass nicht möglich ist. (Vielleicht bin ich falsch)

Wenn man sich die source code of Request anschaut, kann man sehen, dass, wenn Symfony die Anforderung erstellen, Symfony die globale Variable $_GET in $this->query und $_POST in $this->request setzen.
Es gibt keine Symfony-Variable, die beides benötigt.

Wenn Sie es nur an einem Ort brauchen, denke ich, was Sie getan haben, ist in Ordnung.

Wenn nicht, erstellen Sie einen Dienst, der oder eine andere Lösung, die diesen Code berücksichtigt.

Eine andere Lösung ist die globale Variable $_REQUEST zu verwenden, da Symfony die merge macht, aber es hängt von Ihrer PHP-Konfiguration (request_order Parameter Ihres php.ini).
Aber ich glaube nicht, Superglobals Variablen mit Symfony ist eine gute Idee ... (Außer symfony overwrites sie)

+0

Wenn Sie es an mehreren Stellen tun müssen, würde ich vorschlagen, eine Anmerkung zu erstellen. – Terenoth

+0

@Terenoth welche Annotation und was soll es tun? –

+0

@SergeySmirnov Ich meinte eine benutzerdefinierte Annotation. Sehen Sie sich dieses Tutorial an: https://www.sitepoint.com/your-own-custom-annotations/ – Terenoth