Crear Módulo Prestashop
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:
https://devdocs.prestashop.com/1.7/modules/creation/tutorial/
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 llamado «Nombredelmodulo» que tenga una parte 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:
- 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 toras 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/