Blog
Estructura de archivos de un módulo básico en Magento 2
- diciembre 11, 2023
- Publicado por: admin
- Categoría: Magento 2
Ahora voy a hablarles de la estructura de un Modulo en Magento 2, pero antes explicaré qué es un módulo dentro de la plataforma, se lee en los documentos, artículos, tutoriales y demás información en la misma página oficial de Magento que es una plataforma altamente modular, lo que quiere decir es que imaginemos que es un sistema construido por pequeños fragmentos de códigos que en conjunto se podrían nombrar como módulos, físicamente estaríamos hablando de una carpeta que estructura internamente archivos y carpetas en donde su finalidad es construir una pieza más para poder extender las bondades de la plataforma de comercio electrónico, claro está que esta estructura esta conformada por carpetas bien definidas y archivos específicos que de igual forma deben seguir reglas de nombres y agregados en ubicaciones especificas.
Como pueden ver siempre trato de explicar a mi forma de pensar las cosas y esta forma se me hace la mas sencilla y al mismo tiempo agradable, pero en general cuando hablamos o nos referimos a un Módulo personalizado en Magento estamos hablando de una carpeta ubicada en app/code con el nombre de nuestra empresa para mi proyecto yo la llamaría Marcgento, así que quedaría como app/code/Marcgento y dentro de esta carpeta podría crear un sin fin de módulos personalizados que ayuden a mi tienda en línea a aplicar sus funcionalidades.
Pero aquí viene lo interesante, para crear un Módulo dentro de la carpeta de mi empresa en este caso dentro de Marcgento, el módulo debe ser construido con recomendaciones que Magento ha definido para que nosotros los desarrolladores podamos seguir al pie de la letra y conseguir generar módulos bien definidos.
Lo anterior hace referencia a un módulo que podemos crear de forma personalizada pero también hay módulos ya creados por la plataforma que podemos ubicarlos en la ruta vendor/magento/ y dentro de esa carpeta un montón de módulos que ya fueron creados por Magento para realizar un monón de funcionalidades que sera muy indispensable para que mi tienda en línea pueda cumplir con todas mis expectativas.
En este articulo voy a centrarme en un módulo de Magento ya existente, uno de los mas básicos de la plataforma, el objetivo es mostrar la estructura que hay dentro, para que puedan empezar a hacerse una idea de que podría contener un módulo para nuestras futuras creaciones, el módulo que mostraré se encuentra en vendor/magento/module-contact.
Así se ve la estructura de carpetas y archivos:
- Block : dentro de esta carpeta deben agregar clases php que se encargan de la vista, recordemos que Magento en sus módulos trata de aplicar el patrón MVC modelo vista controlador, como las vistas deben ser archivos casi la mayor parte de su código en formato HTML el encargado de enriquecer la vista de programación y conectar los controladores con la vista serán estas clases, mas adelante iremos revisando como se conecta cada pieza del módulo.
- Controller : como ya se ha mencionado el patrón MVC aquí es donde agregaremos las clases php de los controladores, al final son clases que se encargan de llevar las peticiones del usuario a la lógica de programación para que esta por detrás pueda ejecutar acciones en conjunto con sus demás componentes, normalmente estas clases responderán a peticiones hechas desde el navegador por POST y GET, por poner un ejemplo imaginemos un formulario de contacto, la vista mostrara un formulario y la acción que se ejecuta cuando le damos al botón enviar mandara a llamar una clase que estar metida aquí en la carpeta controller tomara todos los parámetros los procesara y finalmente volverá a la vista con una respuesta una vez procesada la acción.
- etc : dentro de esta carpeta encontraremos un montón de archivos XML estos representan estructuras de configuración de nuestros módulos, aquí podemos encontrar archivos como module.xml siendo este el mas importante sin este archivo no existiría un modulo, también podemos encontrar a di.xml, acl.xml, system.xml, config.xml, email_templates.xml, page_types.xml, routes.xml y algunos otros mas, en general todos esos archivos que nos permiten aplicar configuraciones a nuestro BackEnd en el área de administración, en artículos posteriores enseñare por separado cada archivo de configuración por ahora solo basta con entender que hay dentro de la carpeta etc.
- Helper : pensemos que como programadores muchas veces al desarrollar código, podemos encontrarnos con funcionalidad que es repetitiva funciones que no se verían bien dejarlas en nuestras clases ya sea en controladores, modelos, bloques etc, entonces para esto esta esta sección para que generemos una clase general que dentro se encuentre todos nuestros métodos que ayuden a solucionar pequeños componentes que incluso podremos utilizar en el resto del modulo e incluso en otros módulos, es importante mencionar que estas clases pueden abstraer valores de configuración mediante métodos getter.
- i18n : en esta carpeta se almacenaran archivos de tipo CSV que contendrán los paquete de traducción del modulo, recordemos que la plataforma de Magento es multilenguaje así que en este directorio van los archivos que pueden aplicar esa configuración de multilenguaje al modulo, mas adelante mostraré como es sencillo realizar esto, por ahora solo entender que para eso esta esa carpeta ahí para almacenar los archivos del idioma.
- Model : dentro de esta carpeta se encuentran las clases para las entidades, de recurso, colecciones y aquellas que se encargan de la capa de negocio, en concreto aquí se generan estructuras de clases que representan a las tablas de la base de datos, si requerimos crear una tabla para nuestro modelo aquí se construye el modelo de update, insert , delete y selección de datos de una forma no directa por SQL si no utilizando el ORM nativo de Magento.
- Test : dentro de esta carpeta se crea un mini componente con su propia estructura de archivos y carpetas que permiten realizar las pruebas unitarias al módulo que se esta creando.
- view : hablando del patrón MVC ya mencionado aquí es donde se almacenan los archivos que representaran la vista de cara al usuario final, son archivos de plantillas tanto para el frontend y backend del módulo representados por archivos de tipo .phtml y .html así como los archivos estáticos .js y .css.
- registration.php : es un archivo php que permite registrar el modulo a la plataforma de Magento para que funcione conforme a lo definido en el modulo.
El resto de archivos no son implicaciones directas al módulo si no existieran los archivos LICENSE.txt, LICENSE_AFL.txt, README.md y composer.json el módulo seguiría funcionando sin problema alguno, son archivos que registran información de contenido, descripciones como una pequeña documentación referencia de la licencia del modulo , a excepción del archivo composer.json que le permitirá utilizar la capacidad de la tecnología de composer para integrar la referencia de dependencias para sus futuras actualizaciones.