Configurar subForms
En esta guía podrás conocer los parámetros básicos para configurar este componente.
Que son?
Con flexmind se pueden generar formularios simples que insertan datos en una tabla y formularios complejos que inserten datos en una tabla de cabecera y en una o más de tablas relacionadas (formulario con uno o varios "subforms"). El framework permite incorporar una cantidad ilimitada de subforms y el proceso de insertar, actualizar o borrar se realiza automáticamente en la base de datos, dentro de una única transacción.
Ejemplo 1 - Formulario Complejo
Continuando con nuestro ejemplo, vamos a crear un nuevo módulo para registrar en un solo formulario, la tabla cabecera (en este ejemplo es un "cliente") y el detalle las "sucursales" relacionadas al mismo.
En todo subform hay acciones establecidas:
- Por cada registro del subform, es posible borrar o agregar un nuevo registro abajo.
- A nivel general, es posible agregar un nuevo registro abajo al inicio del subform, al final o borrar todos los registros.
Ejemplo 2 - Formulario con Varios Subforms
Un ejemplo con multiples subforms es un formulario de PAGOS, donde existen dos subforms son: Facturas (a cobrar) e Instrumentos de Pagos Recibidos.
La tabla cabecera registra el pago, incluyendo información básica como: fecha de pago, comprobante, etc. Cada subform representan registros de una tabla que se encuentra relacionada a la tabla cabecera.
- El primer subform son las facturas que se están por pagar. Cada elemento de este subform hace referencia a la factura y el importe a pagar.
- El segundo subform son los instrumentos de pagos, es decir, como se paga las facturas. Cada elemento del subform es un instrumento de pago, por ejemplo, un conjunto de facturas podría pagarse la mitad al contado, un porcentaje con cheque y el resto por transferencia bancaria.
Este tipo de estructura permite almacenar automáticamente en la base de datos todos estos registros, insertando la cabecera y después lo relacionado en una misma transacción.
Configuración Básica
Para generar un módulo de completo con subform deberás
- Crear el módulo desde la plantilla. Clic derecho sobre la carpeta modulos > clic en Nuevo módulo desde plantilla > clic en flexGrid & flexForm (subForms)
- Completar los datos del formulario de la siguiente forma:
- Deberás configurar el flexGrid tal cual lo explicado en el capítulo de configuración del flexGrid
- Configurar el flexForm (en nuestro ejemplo, será el archivo ver_clientes_consubform_abm.php). Las variables generales, los campos del formulario principal, y la recuperación de datos de la base de datos es IGUAL a lo explicado en el capitulo de configuración del flexForm
- Configurar el field list subform: En la plantilla generada, deberás configurar los campos del subform en dos lugares:
PRIMERO: Al iniciar el archivo, esta la configuración por defecto del subform, los campos que se utilizan para agregar un nuevo registro (en nuestro ejemplo a la tabla SUCURSALES. Situa el cursor en el lugar indicado, y agrega campos desde la sección de BASE DE DATOS (a la derecha de tu pantalla) o desde la sección FRAGMENTOS.
IMPORTANTE: En este conjunto de campos NO debes agregar el campo RELA (en nuestro ejemplo, rela_syspubl0) ya que el mismo es manejada integramente por el framework.
De esta forma:
SEGUNDO: Deberás recuperar los datos (dentro del bloque de EDITAR un registro de cabecera)
Y configurar el resto de los campos del field_list (tener en cuenta que aqui el STRING se concatena) - Configurar subForm. Al final del archivo, encontraras la condiguración general del subForm. Puedes agregar o modificar parámetros, según la documentación.
Al guardar el archivo (y sincronizar, si estas usando la versión PROD), podremos ver el componente de la siguiente manera:
Validación
Al utilizar el parámetro urlValidator, la validación es similar a la de un flexForm simple, solo que aquí deberás utilizar la plantilla validateSubForms.php
En este archivo (que contiene también el mismo código de ejemplo para validar la cabecera) encontrarás el código necesario para recuperar los datos de los subforms, y realizar validaciones especiales.