Generar URL actual con el idioma cambiado en Twig

190 views
Skip to first unread message

Borja Pombo

unread,
Jan 15, 2014, 1:01:32 AM1/15/14
to symfo...@googlegroups.com
Hace muy poquito que trabajo con Symfony2, hasta ahora estaba trabajando con CMS creados por mí pero me he cansado de picar codigo tontamente y he decidido pasarme a las ventajas que aporta Symfony2.

Estoy rehaciendo un proyecto multilingüe en Symfony2 y estoy precisamente generando el menú de selección de idioma. La cuestión es que quiero que el usuario que entre pueda cambiar el idioma sin cambiar el contenido, si por ejemplo comparten en twitter o facebook el enlace de un contenido en la web, que pueda cambiar el idioma si lo necesita sin perder dicho contenido.

Por ejemplo:

Tengo ya un código que fuerza a que si se entra sin código de idioma, el servidor te redirecciona al idioma por defecto, en este caso inglés. Hasta ahora he conseguido generar los enlaces a distintos idiomas pero perdiendo la URL actual, es decir, mandando al cliente al "home" de la aplicación.

He encontrado algunos ejemplos por internet bastante similares pero todos me lanzan error de Symfony2.

Este sería el trocito de código que más he encontrado por internet a base de buscar.

href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'en'}))}}"

Leyendo un poco el código puedo intuir lo que realiza, pero al parecer falla en algo ya que Symfony2 me devuelve este error:

An exception has been thrown during the rendering of a template ("Unable to generate a URL for the named route "" as such route does not exist.") in "mybundle:Default:home.html.twig".


Al parecer, el vector app.request.get('_route') devuelve un valor vacío.

Añado también que en el controlador no paso ninguna variable a la plantilla.

A ver si alguien puede echarme una mano.

Gracias de antemano. Saludos.

Kenny Rodriguez

unread,
Jan 17, 2014, 10:20:08 AM1/17/14
to symfo...@googlegroups.com
En el archivo routing.yml tienes definidas las rutas para que acepte el parametro del locale?
Si postearas tu archivo de ruteo podríamos quizás ayudarte mejor. 

Manuel Aguirre

unread,
Jan 17, 2014, 1:17:57 PM1/17/14
to symfo...@googlegroups.com
Quizas el problema sea que debes obtener la ruta de la siguiente manera:

app.request.attributes.get('_route')

y no como lo tienes ahora:

app.request.get('_route')

Lo mismo para los parametros de la ruta, Saludos!!!

Reply all
Reply to author
Forward
Message has been deleted
0 new messages