sábado, 25 de mayo de 2013

Symfony - An exception has been thrown during the rendering of a template

Seguramente nos de este error a muchos de los que empezamos con Symfony y usamos de referencia el libro de desarrollo ágil con Symfony.

An exception has been thrown during the rendering of a template ("No route found for "GET Default:listaCiudades"") in "OfertaBundle:Default:portada.html.twig".

[3/3] Twig_Error_Runtime: An exception has been thrown during the rendering of a template ("No route found for "GET Default:listaCiudades"") in "OfertaBundle:Default:portada.html.twig"


[2/3] NotFoundHttpException: No route found for "GET Default:listaCiudades"


[1/3] ResourceNotFoundException:


este error nos indica que no encuentra la vista de listaCiudades, en realidad el problema esta en que lo busca donde no debe, esta buscándolo dentro del Bundle de Oferta, y claro, esta en Ciudades....

Esto es debido a que en el libro nos viene este código:
<li>{% render "CiudadBundle:Default:listaCiudades" 
                        with {'ciudad': ciudadSeleccionada } %}</li>

el cual debemos poner en la plantilla del frontend, pero esto no es valido para versiones de Symfony superiores a la 2.1, versión para la cual esta escrita la versión mas actual a día de hoy del libro; para versiones superiores debemos poner este otro código:

<li>{{ render (controller("CiudadBundle:Default:listaCiudades" , { 'ciudad': ciudadSeleccionada })) }}</li>

PD: el libro lo podéis encontrar en: http://symfony.es/libro/ cuesta 10€, esta en perfecto castellano, son mas de 600 paginas, y por lo general esta bien, aunque contiene algunos errores de este tipo.

PD2: este código esta probado para la versión 2.2.1 de Symfony.