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 plataforma de eCommerce 100% Symfony que rivaliza con Magento y PrestaShop. Ver más

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