Nuevo en Symfony 3.4: Declarada obsoleta la herencia de bundles

Uno de los principales cambios de Symfony 4 es que elimina los bundles para organizar el código de tu propia aplicación. Aunque los bundles de terceros seguirán existiendo en el directorio vendor/, tu código fuente en src/ se organizará con namespaces PHP en vez de bundles.

En Symfony 3.4 hemos ido un paso más allá para simiplificar los bundles: hemos declarado obsoleta la herencia de bundles y la vamos a eliminar en Symfony 4.0. Esta herencia de bundles es un mecanismo que se usaba para redefinir plantillas, controladores y otros elementos de los bundles de terceros. Aunque esta herencia desaparezca, en Symfony 4.0 tendrás muchas otras alternativas para redefinir esos elementos:

  • Controladores: define una ruta con el mismo path que el del controlador que quieres redefinir e implementa tu lógica en un nuevo controlador asociado a esa ruta.
  • Plantillas: utiliza el mecanismo habitual de crear la plantilla en app/Resources/<NombreDelBundle>/views/<nombreDeLaPlantilla>.html.twig o el nuevo directorio templates/bundles/<NombreDelBundle>/<nombreDeLaPlantilla>.html.twig que funciona en Symfony 3.4 y será estándar en Symfony 4.0. También puedes definir namespaces de Twig para sobreescribir las plantillas definidas bajo el namespace de cualquier otor bundle.
  • Rutas: no importes las rutas del bundle o utiliza la misma técnica que con los controladores para redefinir rutas individuales.
  • Servicios y Configuración: usa un compiler pass o la decoración de servicios.
  • Entidades: no es posible redefinirlas a menos que el bundle proporcione mapped superclasses.
  • Formularios: utiliza las extensiones de formularios.
  • Validación: no es posible redefinirla a menos que el bundle utilice grupos de validación.
  • Traducciones: no tiene relación con la herencia de bundles; solo tienes que redefinir los mensajes usando el dominio de traducción adecuado.

Este cambio fue contribuido por Fabien Potencier en el Pull Request #24160.

Fuente: New in Symfony 3.4: Deprecated bundle inheritance

Comentarios

Publicada el

29 de septiembre de 2017

Etiquetas

Proyectos Symfony destacados

La forma más sencilla de generar el backend de tus aplicaciones Symfony. Ver más

Síguenos en @symfony_es para acceder a las últimas noticias.