33-4-comportamiento form std
History Key
- New content
Removed content
Recent Versions
Choose two versions to compare, or click the link to view it.
33.4 Comportamiento de un Formulario Standard
Los formularios generados mediante esta clase tienen por defecto 6 funcionalidades básicas: Adicionar, Consultar, Modificar, Borrar, Visualizar y Reporte
- Los campos son validados automáticamente de acuerdo a su tipo
- Los campos y botones del formulario son habilitados/inhabilitados dependiendo de cada acción evitando a los usuarios hacer operaciones indebidas
- El Formulario genera automáticamente un reporte con la posibilidad de sacarlo en formato PDF, EXCEL, WORD, HTML y la posibilidad de ordenarlo segun cualquier campo activo.
- El Formulario posee una vista para navegar por los registros más fácilmente.
- Permite el uso de helpers para ayudar a los usuarios a la captura de datos.
33.5 Propiedades de un Formulario Standard
33.5.1 $scaffold (True o False)
Hace que Kumbia, lea la información de la tabla de la base de datos y cree un formulario
tipo StandardForm.
33.5.2 $source
Es el nombre de la tabla de la base de datos que utilizara para generar el Formulario
Standard. Por defecto, el nombre de $source coje el valor del nombre del controlador.
Ejemplo : Si el nombre de el controlador es AlbumController, entonces el nombre de la tabla
la cual buscara los datos sera album.
Ejemplo
?phpclass AlbumController extends StandardForm{public $scaffold = true;public $source = "nombre_tabla";}?>
33.6 Métodos de la Clase StandardForm
Estos métodos son llamados en el constructor de la clase y sirven para modificar ciertos
comportamientos del formulario.
Ejemplo
?phpclass AlbumController extends StandardForm {function __construct(){# Ignora el campo portada$this->ignore('portada');}}?>
33.6.1 set_form_caption($title)
Cambia el titulo del formulario por uno personalizado.
33.6.2 use_helper($campo)
Permite que un $campo foráneo tenga la facilidad de un formulario de ayuda extra para
insertar algún dato que no se encuentre
Regresar al momento de insertar.indice
Ejemplo de los Helpers:
Debes tener 2 tablas:
1) Una tabla maestra con alguna relacion usando la convencion tabla_id, por ejemplo
clientes:
Ejemplo
create table clientes (id integer not null primary key,nombre varchar(50) not null,ciudad_id integer not null,primary key(id));
Ejemplo
create table ciudad (id integer not null primary key,nombre varchar(50) not null,primary key(id));
El campo ciudad_id hace la relacion, Kumbia busca un campo llamado: nombre, descripcion
ó detalle en la tabla ciudad
Ahora en el controlador:
Ejemplo
?phpclass ClientesController extends StandardForm{public $scaffold = true;public function __construct(){$this->use_helper("ciudad");}}}?>
33.6.1 set_form_caption($title)
Cambia el titulo del formulario por uno personalizado.
33.6.2 use_helper($campo)
Permite que un $campo foráneo tenga la facilidad de un formulario de ayuda extra para
insertar algún dato que no se encuentre al momento de insertar.
Ejemplo de los Helpers:
Debes tener 2 tablas:
1) Una tabla maestra con alguna relacion usando la convencion tabla_id, por ejemplo
clientes:
Ejemplo
create table clientes (id integer not null primary key,nombre varchar(50) not null,ciudad_id integer not null,primary key(id));
Ejemplo
create table ciudad (id integer not null primary key,nombre varchar(50) not null,primary key(id));
El campo ciudad_id hace la relacion, Kumbia busca un campo llamado: nombre, descripcion
ó detalle en la tabla ciudad
Ahora en el controlador:
Ejemplo
?phpclass ClientesController extends StandardForm{public $scaffold = true;public function __construct(){$this->use_helper("ciudad");}?>
33.6.3 set_type_time($campo)
Indica que un campo es de tipo time (tiempo) asi podemos hacer una captura utilizando un
componente especial para estas
33.6.4 set_type_textarea($campo)
Indica que un campo es de tipo textarea, especial para textos largos como comentarios y
descripciones.
33.6.5 set_type_image($campo)
Hace que un $campo permita almacenar direcciones a imagenes, subirlas al servidor y
gestionarlas.
33.6.6 set_type_numeric($campo)
Forza que un $campo adquiera el tipo numerico, en este caso Kumbia valida que la entrada
de un campo por teclado permita solamente teclas numericas.
33.6.7 set_type_date($campo)
Forza que un $campo sea de tipo fecha, mostrando una ayuda de calendario y un selector de
fechas por dias, meses y años.
33.6.8 set_type_email($campo)
Forza que un $campo sea de tipo email, mostrando un componente especial para capturar
correos electrónicos.
33.6.9 set_type_password($campo)
Especifica que un $campo sea de tipo password, ocultando la entrada con asteriscos y
obligando la reconfirmación del dato.
Los tipo password no aparecen en visualizar por motivos de seguridad .
Uso de Encriptación en Formularios StandardForm
Podemos usar el componente Password de StandarForm para encriptar, pero ocurre un
problema. Por ejemplo si usamos un algoritmo como el sha1 ó md5, que es de una sola vía,
no podremos desencriptar nuevamente el valor la proxima vez que el usuario lo vaya a
editar por esto se recomienda usar algoritmos como el AES con el cual si podemos aplicar
desencriptación y que esta disponible en MySQL.
Los campos tipo password deben ser encriptados en el before_insert y descriptados en el
after_fetch para que todo funcione bien.
Ejemplo
function before_insert(){$this->Usuarios->password = "% aes_encrypt($this->post('fl_password'),'semilla')";}function after_fetch(){$this->Usuarios->password = "% aes_decrypt($this->Usuarios->password,'semilla')";}
33.6.10 set_text_upper($campo)
Hace que los valores de un campo permanezcan siempre en mayúsculas.
33.6.11 set_combo_static($camo, array $valores)
Crea un combo estatico que hace una validación de dominio en un $campo con los $valores
especificados.
33.6.12 set_combo_dynamic($campo, $tabla, $campoDetalle, “column_relation: $campo”)
Crea un combo con los datos de la tabla ($tabla), asociando la clave foranea ($campo), y
llenando el combo con los valores ($campoDetalle). Si el campo en la tabla detalle no tiene
el mismo nombre del de la tabla relación entonces se debe usar column_relation para indicar
el nombre de este.
Con esta función podremos crear dinamicamente (sin seguir la convención campo_id del
StandardForm) lo mismo que use_helper($campo).
Ejemplo:
Debes tener 2 tablas:
1) Una tabla maestra con alguna relacion por ejemplo clientes:
Ejemplo
create table clientes (id integer not null primary key,nombre varchar(50) not null,idciudad integer not null,primary key(id));
Ejemplo
create table ciudad (id integer not null primary key,nombre_ciudad varchar(50) not null,primary key(id));
Ahora en el controlador:
Ejemplo
?phpclass ClientesController extends StandardForm{public $scaffold = true;public function __construct(){//Como vemos no tenemos que seguir la convención , la podemos crear//dynamicamente en nuestro codigo$this->set_combo_dynamic("idciudad","ciudad","nombre_ciudad");}?>
33.6.13 ignore($campo)
Hace que un campo no sea visualizado en el formulario, ni tenido en cuenta en las
operaciones del CRUD.
33.6.14 set_size($campo, $size)
Coloca el tamaño de un campo texto en $size
33.6.15 set_maxlength($campo, $length)
Coloca el tamaño maximo de un campo de texto en $length
33.6.16 not_browse($campo, [$campo2, ...])
Hace un campo no aparezca en la vista de Visualización. Este campo puede recibir una lista
de campos.
33.6.17 not_report($campo)
Hace un campo no aparezca en el reporte. Desaparece el botón de Modificar.
33.6.18 set_title_image($im)
Nombre de imagen que aparecerá antes del titulo del formulario en forma decorativa. Debe
estar en el directorio public/img/
33.6.19 fields_per_row($number)
Organiza los campos del formulario colocando $number campos en cada fila. Por defecto es 1
33.6.20 unable_insert
Impide que se inserte en el formulario. Desaparece el botón de Adicionar.
33.6.21 unable_delete
Impide que se borren datos usando el formulario. Desaparece el botón de Borrar.
Ejemplo
?phpclass ClienteController extends StandardForm {public $scaffold = true;public function __construct(){$this->unable_delete();}}?>
33.6.22 unable_update
Impide que se actualizen datos usando el formulario. Desaparece el botón de Modificar.
33.6.23 unable_query
Impide que se consulte usando el formulario. Desaparece el botón de Consultar.
33.6.24 unable_browse
Impide visualizar la vista de Visualización. Desaparece el botón de Visualizar.
Ejemplo
?phpclass ClienteController extends StandardForm {public $scaffold = true;public function __construct(){$this->set_title_image('cliente.jpg');$this->unable_browse();$this->unable_update();}}?>
33.6.25 unable_report
Impide la generación del reporte. Desaparece el botón de Reporte.
33.6.26 route_to($controller,$action,$id)
Hace el enrutamiento desde un controlador a otro, o desde una acción a otra.
Ejemplo
?phpreturn $this->route_to("controller: clientes", "action: consultar", "id: 1");?>
33.6.27 set_hidden($campo)
Coloca un campo oculto en la forma.
33.6.28 set_query_only($campo)
Hace que un campo sea de solo lectura.
33.6.29 set_caption($campo, $caption)
Cambia el Label por defecto de un campo por otro
33.6.30 set_action_caption($action, $caption)
Cambia el Texto de los Botones, de los formularios Standard
Ejemplo
?phpclass eCuentasController extends StandardForm{public $scaffold = true;public function __construct(){$this->set_action_caption("insert", "Agregar");$this->set_action_caption("report", "Listado");}}?>
33.6.31 set_event($action, $caption)
Esta Función introducida (versión 0.4.5 beta7), nos facilita la introducción de funciones en
los eventos a nivel de campo (Validacion por campo).
Esto es un Ejemplo, cuando salimos del campo nombre, le ponemos automaticamente el
valor al campo razonSocial.
Ejemplo
?phpclass ClientesController extends StandardForm{public $scaffold = true;function __construct(){$this->set_event('nombre','onblur','$C(“razonsocial").value = $C("nombre").value');}}?>
33.6.32 set_attribute($field, $attribute,$value)
Asigna un atributo a un campo del formulario.
Ejemplo:
Por Ejemplo en un campo Descripcion(textarea) le queremos reducir, el número de líneas y la
longitud:
Ejemplo
?php//En el constructor de la clase:function __construct() {$this->set_attribute("Descripcion", "rows", 3);$this->set_attribute("Descripcion", "cols”, 30);}?>
33.6.33 show_not_nulls()
Hace que aparezca un asterisco al lado de los campos del formulario que sean obligatorios.