Crear módulo Prestashop
Prestashop pone a disposición de los desarrolladores un formulario que genera los archivos necesarios para la creación de un módulo, incluyendo opciones como para compatibilidad de versiones, hooks a los que se anclará el módulo, uso de posible tabla propia en la base de datos…
La siguiente dirección nos permitirá generar los archivos necesarios para comenzar con la creación de cualquier módulo:
https://validator.prestashop.com/generator
A partir de las instrucciones de la documentación de Prestashop, hemos seguido un «tutorial» para crea un módulo muy básico, disponible ya en mi repositorio a través de esta dirección:
https://github.com/JorgeGolo/first-upload-module
Este es el enlace a la documentación oficial:
- Para versiones 1.7.x
- Para Prestashop 8
Voy a listar unas notas que me han parecido bastante esclarecedoras sobre la forma que tiene Prestashop de estructurar sus módulos, y de cómo seguir sus estándares. Algunas ya las conocía de otras versiones:
- Todo módulo generado con el formulario que hemos comentado, llamado «Nombredelmodulo», tiene un archivo principal llamado nombredelmodulo.php, con una estructura de carpetas similar a todos los demás módulos
- Si tiene una sección de «Configuración» en el BackOffice tiene una función llamada getContent() en el archivo nombredelmodulo.php
- Tools::isSubmit() es un método específico de Prestashop que comprueba si un formulario ha sido ejecutado.
- Tools::getValue() es otro método específico que lee el parámetro desde POST o GET. En el ejemplo, Tools::getValue(‘MYMODULE_CONFIG’), donde MYMODULE_CONFIG es el name que le hemos dado al input del formulario.
- updateValue(‘MYMODULE_CONFIG’, $nombrevariable) actualizará el texto del campo del formulario.
- El objeto Validate contiene muchos métodos de validación, uno de ellos es isGenericName(), que ayuda a validar una string con «formato Prestashop válido», es decir, sin caracteres especiales.
- displayError() muestra un mensaje de error
- Hay algunos otros métodos explicados en el ejemplo que son fáciles de seguir.
En el tutorial también se habla de HelperForm. En el contexto de programación web y sistemas de gestión de contenido como PrestaShop, HelperForm es una función o clase utilizada para simplificar la creación de formularios en el back office de PrestaShop. Estos formularios suelen ser parte de módulos o extensiones que se integran en el panel de administración de PrestaShop. Aquí tienes una lista de ventajas del uso de los estándares con HelperForm:
- Facilita el Desarrollo:
- Un helperform podría proporcionar métodos y funciones listas para usar que simplifican la creación de elementos comunes de formularios, como campos de entrada, botones, selectores, etc.
- La estandarización facilita el desarrollo, ya que los desarrolladores pueden utilizar la misma interfaz y estructura para crear formularios en diferentes partes del back office.
- Consistencia Visual:
- Al utilizar una clase o función común para la creación de formularios, se promueve la consistencia visual en la interfaz de administración de PrestaShop.
- Los elementos del formulario generados por el helperform seguirían un estilo y diseño coherentes, lo que mejora la experiencia del usuario y la apariencia general del back office.
- Reutilización de Código:
- La función o clase «helperform» podría contener métodos que encapsulen la lógica comúnmente utilizada en la manipulación y validación de datos de formularios.
- Esto permite a los desarrolladores reutilizar código, evitando la duplicación y reduciendo la probabilidad de errores.
- Adaptabilidad a Futuras Actualizaciones:
- Al seguir una interfaz estandarizada proporcionada por el helperform, los módulos y extensiones desarrollados con esta clase pueden ser más adaptables a futuras actualizaciones de PrestaShop.
- Cambios en la implementación interna de PrestaShop podrían ser manejados dentro de la clase helperform, minimizando el impacto en los módulos existentes.
- Documentación Clara:
- Una función o clase dedicada simplifica la documentación para los desarrolladores. Pueden entender rápidamente cómo crear formularios y qué métodos están disponibles, facilitando la adopción y el mantenimiento.
- Aumento de la Productividad:
- Al reducir la complejidad y la cantidad de código necesario para crear formularios, los desarrolladores pueden ser más productivos y centrarse en la lógica específica de sus módulos en lugar de la implementación de formularios.
- Para generar un formulario, usamos un array multinivel y luego se lo pasamos como parámetro a la clase HelperForm
- Se crea una instancia de la clase y se le pasan parámetros a sus métodos.
- Luego se usa el método generateForm() pasándole como variable el array que hemos creado anteriormente.
- Todo esto dentro de una función displayForm() que tendrá este return:
return $helper->generateForm([$form]);
- La función displayForm la pasamos a su vez al return de getContent(), junto con otras variables (si queremos):
return $output . $this->displayForm();
Prestashop pone a disposición de los desarrolladores otros helpers como HelperList. En esta entrada se hace uso de HelperList:
https://www.prestashop.com/forums/topic/334228-solved-helperlist-not-generating-the-list/