Creación de un módulo CRUD con acceso a base de datos - Parte III


CREACIÓN DE UN MÓDULO EN PRESTASHOP

Continuaremos con la creación del módulo para lograr el objetivo que habíamos propuesto:
- Crear las opciones de cada proveedor: dónde está el archivo CSV, dónde leer el precio, dónde leer las existencias, qué margen añadir al precio del producto.
- Modificar los datos registrados para cada proveedor.
- Eliminar los datos registrados de un proveedor.

Es decir, vamos a crear un módulo CRUD con una tabla propia en la base de datos y con todo el código necesario para tener todas las acciones básicas listas.

                                                     Ir a Parte I -- Ir a Parte II

Si has seguido las instrucciones de las partes anteriores, ya tendrás un módulo que puede instalarse y desinstalarse, que además crea la tabla en la base de datos cuando instalas el módulo y la elimina cuando lo desinstalas.  También tienes una pantalla inicial que muestra un listado con los datos que tienes registrados y desde donde puedes añadir, modificar y eliminar los datos.  También tienes ya un formulario para ingresar nuevos datos.   En esta última parte, añadiremos el código necesario para terminar las funciones de adición, modificación y borrado de los datos. 

AÑADIR NUEVOS DATOS


Ahora que ya tenemos nuestro formulario de captura, añadiremos el código necesario para ingresar los datos del formulario en la base de datos.

Si recuerdas, en la declaración del formulario tenemos una línea en la cual indicamos el nombre de la acción que identificará la adición de datos:

acción de formulario

Por este motivo, en nuestra función de control (función getContent()), deberemos capturar el momento en el que recibimos datos del formulario para proceder al guardado de los mismos.  Lo haremos añadiendo el código marcado con el recuadro rojo en la siguiente imagen:
código php para guardar datos

Con la función Tools::isSubmit() capturamos la acción que el módulo nos está pidiendo.  En este caso, acción es la que tenemos definida en la acción del HelperForm (saveModulo_Proveedores) y por lo tanto, sabemos que debemos guardar un nuevo dato en nuestra tabla de la base de datos.

Para guardar los datos, utilizaremos la Clase que creamos al principio de la Parte I de este artículo, para ello usamos la instrucción new proveedoresClass().  Ahora veremos cada línea de esta sección:

instrucciones para guardar datos

En los renglones de valores, vamos guardando en cada campo de nuestra clase el valor que nos envía el formulario.  Utilizamos la siguiente sintaxis para cada valor que necesitamos guardar:
sintaxis variables formulario


1 – nombre de la variable que instancia a la clase
2 – función set de la variable que queremos guardar (mira en la Parte I de esta serie la creación de las funciones Set en la Clase)
3 – tipo de dato a ingresar
4 – instrucción para capturar el dato que viene del formulario
5 – nombre del campo del formulario que tiene el valor que queremos guardar  (mira en la Parte II de esta serie la definición de los campos del formulario)
6 – valor que guardaremos en la tabla de la base de datos si Tools::getValue nos regresa un valor vacío.

En la última línea, con Tools::redirectAdmin, le indicamos a nuestra función que después de salvar el registro, retorne a la página inicial de nuestro módulo:

redirección a otras partes del módulo


Ahora ya puedes ingresar a tu tabla en la base de datos con phpMyAdmin y verás que ya ha quedado ingresado el registro.

ACCIONES ADICIONALES SOBRE LOS DATOS

Ahora que ya puedes ver datos en la lista de la pantalla inicial de tu módulo, verás que a la derecha hay un botón con dos opciones: Ver y Eliminar.
botones de registros en HelperList

Estas acciones vienen de la definición de la HelperList que hicimos en la Parte II de esta serie:
acciones edit y delete

En el caso de la opción view (Ver), identificaremos la acción mediante viewps_mod_proveedores, que es el dato identificativo que nos envía nuestro módulo para esta acción, como podemos ver en el enlace que se genera para el botón:

http://.../index.php?controller=AdminModules&configure=Modulo_Proveedores&id_csv=1&viewps_mod_proveedores&token=716576972c14509718305502b9c24110

En el caso de la opción delete(Eliminar), identificaremos la acción mediante deleteps_mod_proveedores, que es el dato identificativo que nos envía nuestro módulo para esta acción, como podemos ver en el enlace que se genera para el botón:

http://.../index.php?controller=AdminModules&configure=Modulo_Proveedores&id_csv=1&deleteps_mod_proveedores&token=716576972c14509718305502b9c24110

En ambos enlaces, podemos ver en color verde que nuestro módulo automáticamente nos envía el identificador del registro con el cual vamos a trabajar.

También vemos que el identificador de la acción se forma mediante la palabra de la acción definida en la creación de la HelperList anexándole el nombre de nuestra tabla (incluyendo el prefijo que da Prestashop a las tablas, ‘ps’ en este caso).

EDITAR DATOS

En este caso, necesitamos hacer uso de la acción ‘Ver’ que aparece en la lista de nuestra pantalla inicial.

Para que se vea claramente cómo se hace, usaremos funciones adicionales.  Cuando hayas entendido el funcionamiento, podrás optimizar tu código, pues verás que muchas cosas coinciden con las funciones para añadir un registro nuevo.

Incluiremos aquí las imágenes de los pasos necesarios, que son los siguientes:
  •  Identificar la acción ‘Editar’ en la función getContent()
  •  Crear el formulario de Edición
  • Identificar la opción de salvar los cambios en la función getContent()

Bajo cada imagen, incluiremos explicaciones adicionales específicas, si aplica.

Identificar la acción ‘Editar’ en la función getContent()

identificar acción en Tools::isSubmit

Crear el formulario de Edición (HelperForm)

Tomamos los datos que nos envía el módulo:
recibir datos para edición

Recuerda que en id_csv, traemos el valor del registro con el que vamos a estar trabajando.

Declaramos los campos del formulario:
campos del formulario de edición

Todo es similar al formulario de captura de datos, excepto que en este caso incluimos un campo oculto, no editable, con el identificador del registro con el que trabajaremos (con el valor de id_csv):
campo input oculto

Creamos el formulario (HelperForm):
crear formulario de edición


Todo es similar al formulario de captura de datos, excepto que en este caso el nombre de la acción para enviar el formulario es distinta (recuerda que la utilizaremos pronto) y que en la opción tpl_vars, también enviamos el valor del nuevo campo que incluimos (id)
Identificar la opción para salvar los cambios en la función getContent()

Identificar la opción para salvar los cambios en la función getContent()  

función para guardar edición de datos

Obtenemos de Tools::isSubmit la instrucción de guardar un cambio  a un registro. 
Al crear nuestra instancia de la clase, lo hacemos con el id correspondiente al registro que vamos a trabajar, de esta manera, cargamos un dato existente y al salvarlo, Prestashop automáticamente realizará una actualización (en vez de crear un nuevo registro).

ELIMINAR DATOS

En este caso, necesitamos hacer uso de la acción ‘Eliminar’ que aparece en la lista de nuestra pantalla inicial.

En este caso, dentro de la función getContent() incluiremos las siguientes líneas:

función para borrar datos


Después de identificar la acción para Eliminar con Tools::isSubmit, cargamos el registro desde la base de datos creando una instancia de la clase usando el id.

Con la instrucción delete(), el registro es eliminado de la base de datos.


Y con esto, damos por terminado nuestro tutorial.

DESCARGAR LOS ARCHIVOS


Si crees que te será útil este tutorial, tenemos los archivos para descarga en la web de Pontebazar.

Ahora puedes crear un módulo para Prestashop que use tu propia tabla en la base de datos.  Puedes realizar las acciones básicas (CRUD) con tus datos.  ¡¡Todas las mejoras y funciones adicionales que quieras realizar están a sólo unas líneas de distancia!!


¡¡Muchas gracias por seguir este pequeño tutorial!!

                                                    Ir a Parte I -- Ir a Parte II

Puedes consultarnos tus dudas, enseñarnos tus creaciones, contarnos cómo has usado este tutorial, etc.  ¡Nos hará muchísima ilusión saber que hemos sido de utilidad!


Mi trabajo está protegido por derechos de autor, por lo que no debes compartirlo libremente, puedes imprimirlo cuantas veces necesites, pero no debes compartirlo con otr@s.  ¡Mejor recomiéndame!!


Cualquier duda o comentario, por favor ¡¡contacta y/o comenta!!

Gracias!



                                                       



Comentarios