symfony - array - twig documentation
obtener url actual en la plantilla ramita? (6)
Debe tenerse en cuenta que si tiene parámetros de consulta adicionales en su URL, que no son parte de la ruta configurada, la respuesta aceptada no los incluirá en la URL actual (ruta).
¿Por qué querrías parámetros adicionales?
Por ejemplo, si tiene una página de lista con registros que se pueden filtrar por palabra clave y la página tiene paginación, lo más probable es que las variables de consulta para "palabra clave" y "página" no estén en su ruta. Pero en los botones hacia adelante y hacia atrás para paginación, necesita la URL completa actual (que contiene las palabras clave, por lo que la página siguiente aún está filtrada). Y necesita modificar la variable de página.
Cómo combinar en parámetros de consulta extra
Entonces puede obtener la ruta actual y fusionar las variables adicionales (después de modificar una o más de esas variables adicionales). Tenga en cuenta que se está fusionando en sus propias variables con la app.request.query.all
y luego fusionando esa matriz en la app.request.attributes.get(''_route_params'')
. El método path()
requiere que proporcione todos los parámetros requeridos de la ruta, por lo que debe incluir _route_params
.
{{ path(app.request.attributes.get(''_route''), app.request.attributes.get(''_route_params'')|merge(app.request.query.all|merge({''page'': 2 }))) }}
Eso es realmente feo, pero si está desarrollando paginación, tendrá que modificar la variable de la página en cada enlace por separado, por lo que debe incluir todo el asunto cada vez. Quizás otros tengan una mejor solución.
Posible duplicado:
¿Cómo obtener la ruta actual en Symfony 2?
Busqué el código para obtener la ruta actual en una plantilla de Twig (y no en la URL completa), es decir, no quiero http://www.sitename.com/page
, solo necesito /page
.
En Symfony 2.1 puedes usar esto:
{{ path(app.request.attributes.get(''_route''),
app.request.attributes.get(''_route_params'')) }}
En Symfony 2.0, una solución es escribir una extensión twig para esto
public function getFunctions()
{
return array(
''my_router_params'' => new /Twig_Function_Method($this, ''routerParams''),
);
}
/**
* Emulating the symfony 2.1.x $request->attributes->get(''_route_params'') feature.
* Code based on PagerfantaBundle''s twig extension.
*/
public function routerParams()
{
$router = $this->container->get(''router'');
$request = $this->container->get(''request'');
$routeName = $request->attributes->get(''_route'');
$routeParams = $request->query->all();
foreach ($router->getRouteCollection()->get($routeName)->compile()->getVariables() as $variable) {
$routeParams[$variable] = $request->attributes->get($variable);
}
return $routeParams;
}
Y usa así
{{ path(app.request.attributes.get(''_route''), my_router_params()|merge({''additional'': ''value''}) }}
No necesitará todo esto a menos que desee agregar parámetros adicionales a sus enlaces, como en un buscapersonas, o si desea cambiar uno de los parámetros.
Obtenga la URL actual : {{ app.request.uri }}
en Symfony 2.3, 3, 4
Solo obtener ruta : {{ app.request.pathinfo }}
Puedes obtener la URL actual en Twig así:
{{ app.request.schemeAndHttpHost ~ app.request.requestUri }}
Si está utilizando Silex 2, ya no podrá acceder al objeto Request.
Puede acceder a los atributos de solicitud actuales de esta manera.
app.request_stack.currentrequest.attributes.get(''_route'')
Y para generar la URL actual completa: path(app.request_stack.currentrequest.attributes.get(''_route''), app.request_stack.currentrequest.attributes.get(''_route_params''))
{{ path(app.request.attributes.get(''_route''),
app.request.attributes.get(''_route_params'')) }}
Si quieres leerlo en una variable de vista:
{% set currentPath = path(app.request.attributes.get(''_route''),
app.request.attributes.get(''_route_params'')) %}
La variable de vista global de la app
contiene todo tipo de accesos directos útiles, como app.session
y app.security.token.user
, que hacen referencia a los servicios que puede usar en un controlador.