Ich versuche, die Abfragezeichenfolgenwerte in einer URL zu ändern.
Ich kann die aktuelle URL oder die Route entweder aus dem Request-Objekt oder den Twig-Funktionen abrufen, aber es ist die Abfragezeichenfolge, mit der ich zu kämpfen habe.
Ich brauche app.request.attributes.get ('_ route_params') nicht, da dies die Abfragezeichenfolge-Parameter erhält, die in der Route enthalten sind.
Ich muss Abfragezeichenfolgeparameter abrufen, die sich tatsächlich in der URL befinden.
Ich möchte in der Lage sein, die beiden nachfolgend aufgeführten Funktionen in Symfony2 (in einem PHP - Controller) und in Twig (in einer Twig-Vorlage) auszuführen:
Rufen Sie alle aktuellen Abfragezeichenfolgenwerte in der URL ab und zeigen Sie sie an
Tun Sie 1, ändern Sie jedoch einen der Abfragezeichenfolgen, bevor Sie sie anzeigen
Ich kann niemanden finden, der weiß, wie das geht.
Sie können app.request.query.all
verwenden, um Ihre Abfragezeichenfolgen abzurufen.
Wenn Sie einen Parameter in Twig ändern möchten, können Sie dies tun
{% set queryParams = app.request.query.all %}
{% set queryParams = queryParams|merge({queryKey: newQueryValue}) %}
use Symfony\Component\HttpFoundation\Request;
public function fooAction(Request $request)
{
$params = $request->query->all();
}
bitte, Achtung : $request->query->all();
gibt ein Array mit Schlüsseln zurück, die als Abfrageparameter bezeichnet werden
Solange Sie vom Controller aussteigen (lesen Sie dies wie immer), können Sie Ihre Parameter auf diese Weise an eine Ansicht übergeben
use Symfony\Component\HttpFoundation\Request;
public function fooAction(Request $request)
{
$params = $request->query->all();
return $this->render('MyFooBundle:Bar:foobar.html.twig', array('params' => $params));
}
In Ihrer Zweigvorlage foobar.html.twig
können Sie einfach auf alle Parameter der Abfragezeichenfolge zugreifen, indem Sie die Variable params verwenden.
z. B. mit dieser Anforderungs-URL: http://example.com/?foo=bar&secondfoo=secondbar
{% for paramName, paramValue in params %}
<div>{{ paramName }}: {{ paramValue }}</div>
{% endfor %}
<div>{{ params.secondfoo }}</div>
zweigausgabe:
<div>foo: bar</div>
<div>secondfoo: secondbar</div>
<span>secondbar</span>
Eine andere Methode ist, app.request.query.all
in twig zu verwenden, ohne etwas von Ihrem Controller an twig weiterzuleiten.
Wenn Sie einen dieser Parameter ändern möchten, wenn Sie ein Array an einen Zweig übergeben, ändern Sie einfach einen der Array-Werte wie bei normalen Werten (d. H .: $params['id'] = $params['id'] - 1;
)
Um die Abfragezeichenfolge " https://stackoverflow.com?name=jazz " zu erhalten
{{ app.request.query.get('name') | default('default value if not set'); }}
Hallo Stephen, wir haben deine Lösung ausprobiert, um den Wert zu erhalten, aber es wird auf den Standardwert gesetzt. http: // localhost: 4000/about/investoren/wichtige daten-und-ereignisdetails? jahr = 2017 # q1
ich habe so auf meiner Zweigdatei verwendet
Lass es mich wissen, bitte.