Solución [Twig_Error_Runtime] does not exist in «form/FormType.php.twig» at line 29

En Symfony3 y Symfony2.8 Cuando intentamos generar un formulario vinculado a un modelo que tiene algun tipo de relación con otra entidad de Doctrine, nos falla al generar el campo que se relaciona con la otra entidad.

Si lanzamos:

php bin/console doctrine:generate:form AppBundle:Post

Nos puede dar un error así:
[Twig_Error_Runtime]
Key «category» for array with keys «id, description» does not exist in «form/FormType.php.twig» at line 29

Esto es un bug que todavia no han corregido, porque son versiones de Symfony muy recientes.

La solución es entrar al directorio vendor/sensio/generator-bundle/Resources/skeleton/form/FormType.php.twig y en la linea 29 cambiar esto

{%- if fields_mapping[field]['type'] in ['date', 'time', 'datetime'] %}

por esto

{%- if fields_mapping[field] is defined and fields_mapping[field]['type'] in ['date', 'time', 'datetime'] %}

Lo que le estamos diciendo es que genere el campo si el campo está definido en la clase de la entidad, es decir, si ese campo está mapeado por el ORM y si el es del tipo date, time o datetime. Antes no comprobaba si ese campo estaba definido y al no estar definido tampoco podia sacar de que tipo era.

Con esto ya podemos generar formularios sin que falle.

Más información:
http://stackoverflow.com/questions/33851148/twig-error-runtime-on-symfony2

Víctor Robles WEB

Autor: Victor

Desarrollador web - Formador online - Blogger

Compartir este post