extension symfony twig

symfony - extension - twig project



Symfony2/Twig trata de obtener valores de cadena de consulta de URL (2)

En el controlador

use Symfony/Component/HttpFoundation/Request; public function fooAction(Request $request) { $params = $request->query->all(); }

por favor, preste atención : $request->query->all(); devolverá una matriz con claves nombradas como parámetros de consulta

En ramita

Mientras pase desde el controlador (lea esto como siempre) puede pasar sus parámetros a una vista de esa manera

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)); }

En la plantilla foobar.html.twig puede acceder a todos los parámetros de cadena de consulta simplemente utilizando la variable params .

por ejemplo, con esta URL de solicitud: http://example.com/?foo=bar&secondfoo=secondbar

{% for paramName, paramValue in params %} <div>{{ paramName }}: {{ paramValue }}</div> {% endfor %} <div>{{ params.secondfoo }}</div>

ramita de salida:

<div>foo: bar</div> <div>secondfoo: secondbar</div> <span>secondbar</span>

Otro método es usar app.request.query.all en ramitas, sin pasar nada a twig desde su controlador.

Nota final

Si desea modificar uno de esos parámetros al pasar una matriz a twig desde su controlador, simplemente cambie uno de los valores de la matriz, como lo haría con los valores normales (es decir: $params[''id''] = $params[''id''] - 1; )

Estoy tratando de manipular los valores de cadena de consulta en una URL.

Puedo obtener la URL o ruta actual desde el objeto Request o las funciones de Twig, pero es la cadena de consulta con la que estoy luchando.

No necesito app.request.attributes.get (''_ route_params'') ya que esto obtiene los parámetros de cadena de consulta que están en la ruta.

Necesito obtener parámetros de cadena de consulta que estén realmente en la URL.

Quiero poder hacer las dos cosas enumeradas a continuación tanto en Symfony2 (en un controlador PHP) como en Twig (en una plantilla Twig):

  1. Obtenga todos los valores de cadena de consulta actuales en la URL y muéstrelos

  2. Haga 1, pero cambie uno de los valores de cadena de consulta antes de mostrarlos

No puedo encontrar a nadie que sepa cómo hacer esto.


Puede usar app.request.query.all para obtener sus cadenas de consulta.

Si quieres cambiar un parámetro en Twig, puedes hacer esto

{% set queryParams = app.request.query.all %} {% set queryParams = queryParams|merge({queryKey: newQueryValue}) %}