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):
Obtenga todos los valores de cadena de consulta actuales en la URL y muéstrelos
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}) %}