Blog de Gonzalo

COMO CREAR BUNDLES EN SYMFONY 3

Estoy aprendiendo a hacer páginas web con Symfony 3 y la verdad es que me está resultando bastante sencillo. Los bundles en Symfony 3 son módulos, paquetes o plugins, teniendo cada uno de ellos su propia lógica: controladores, vistas, archivos de configuración, etc...
Por ejemplo en una tienda un bundle sería la propia tienda con su carrito, procesos de pago, etc...otro bundle sería el blog de la tienda donde se habla de los productos, etc...otro bundle sería el foro de la tienda donde los clientes pudiesen hblar de trucos, etc...
Gracias a los bundles se pueden desarrollar aplicaciones reusables de forma sencilla y mantener cierto orden en el proyecto.
Hay dos maneras de como crear bundles en symfony 3 pero solo voy a explicar una de ellas ya que es la más aconsejable y puede crear menos problemas.
El comando que hay que ejecutar, dentro del proyecto de Symfony 3 es php bin/console generate:bundle y la aplicacón irá haciendo una serie de preguntas.

  • Si quiere que otras aplicación use el bundle lo aconsejable es contestar que si (y).
  • El nombre del bundle, muestra un ejemplo. El nombre tiene que ser el que vosotros querais pero tiene que ser lo más descriptivo posible para que los programadores que vayan a tocar ese código sepan que van a tocar. EL formato es "NombrecualquieraBundle".
  • El directorio donde se va a generar el bundle, el script aconseja que se use el directorio "/src". Con pulsar enter vale.
  • El formato con el que se va a guardar la información como el fichero de routing. Ofrece varias opciones pero creo que la mejor es "NombrecualquieraBundle" ya que es más fácil de entender.
Después de generar la última opción se generará el bundle. Una vez que se ha generado el bundle el código estará disponible en la carpeta "/src" o la carpeta que hayáis indicado. Para probar que funciona podéis ir a la carpeta "src/TuBundle/Resources/config" editar el fichero "routing.yml" y añadir una ruta:

backend_hola_mundo:
path: /holamundo
defaults: { _controller: BackendBundle:Default:index }

Si arrancais Symfony 3 con el comando "php bin/console server:run" y al terminar de ejecutar poneis la ruta "http://localhost:8000/holamundo" lo que hará Symfony 3 es ejecutar el método index del controlador Default del bundle Backend.
IMPORTANTE:Si os da error tenéis que comprobar el código del fichero composer.json y si veis lo siguiente:
 
    "autoload": {
"psr-4": {
"AppBundle\\": "src/AppBundle"
"BackendBundle\\": "src/BackendBundle"
},
"classmap": [ "app/AppKernel.php", "app/AppCache.php" ]
},


Y reemplazarlo por el siguiente con el siguiente código:
 
    "autoload": {
"psr-4": {
"": "src/"
},
"classmap": [ "app/AppKernel.php", "app/AppCache.php" ]
},


Dentro de cada bundle se crean las entidades, para base de datos, los controladores y las vistas.

Compartir en twitter