Es sintaxis - Patroklo/F--fast-forms GitHub Wiki

La sintáxis necesaria para poder configurar los campos dependerá mucho del nivel de complejidad del formulario que vayamos a crear.

Hay que tener en mente que cada campo corresponde con una columna de la tabla de la base de datos con la que estamos trabajando en el modelo de FFF. Por lo tanto, habrá que listarlas todas aunque no tengan una representación directa en las vistas del formulario.

Propiedades de tablas

  • "upload" (boolean) (TRUE/FALSE) si es true, indicará a FFF que se trata de un formulario que contiene al menos un campo de tipo upload.

  • "upload_config" (array) contiene configuraciones necesarias para poder realizar el upload, todas ellas serán preferencias de la clase "file uploading" de codeigniter. No obstante se recomienda evitar usar las opciones relacionadas con peso y tamaño del archivo ya que, como se explicará en la entrada de "form validation" de este manual, esto queda cubierto con reglas específicas de formulario que pueden ser configuradas a nivel de campo.

ejemplo JSON:

{

"upload":true,

"upload_config":{"upload_path":"./prueba","overwrite":false}

}

Propiedades de los campos

En un principio, la configuración puede dividirse en 2 secciones:

1. Propiedades básicas (basic_properties)

Con esta etiqueta se listan varias subetiquetas que indican una serie de atributos básicos que tendrán los campos que corresponden con columnas en la tabla de la base de datos.

  • "form" (boolean) (TRUE/FALSE) esta propiedad indica si el campo con el que estamos trabajando aparecerá o no en las vistas del formulario. Un "TRUE" hará que aparezca y un "FALSE" no. Es especialmente útil para ocultar campos autoincrementales como el id de una tabla u otros que no pueden rellenarse diréctamente en un formulario sino que pueden ser generados de otras formas.

  • "BBDD" (boolean) (TRUE/FALSE) esta propiedad indica si se insertarán datos automáticamente en su equivalente de la base de datos una vez se lance una función de CRUD de inserción o edición.

  • "column" (string) esta etiqueta almacena el nombre que este campo tiene en la columna de la tabla.

  • "form_name" (string) esta propiedad provee el nombre con el que queramos mostrar en el formulario el campo. Puede activarse o desactivarse con una propiedad explicada más adelante.

  • "validation" (array) contiene dos entradas:

"new" (string) una cadena de texto con las reglas de Codeigniter referidas a la validación de formularios. Estas reglas se lanzarán cuando se quiera hacer una inserción en un formulario. "edit" (string) cadena de texto con el conjunto de reglas de Codeigniter referidas a la validación de formularios. Estas reglas se lanzarán cuando se quiera hacer una edición de datos de un formulario.

Para obtener más información sobre las reglas genéricas de la validación de formularios en Codeigniter podéis mirar en el manual que tienen en su página web, que es bastante completo y está muy bien explicado. También hay algunas reglas específicas referidas sobre todo al upload de fichero que están descritas en este manual en la sección que define el fichero de form_validation.

  • "type" (string) esta etiqueta define el tipo de campo html que se mostrará en la vista. Esta etiqueta tendrá una incidencia mayor en la estructura de las siguientes secciones de la definición del campo.

Existen por ahora estos tipos de campos:

  1. text_input : es el campo de input de texto estandar de HTML.
  2. textarea : genera un campo de textarea
  3. select : muestra un tag html "select" precargado con los datos que le hayamos suministrado.
  4. radiobutton : una lista de campos tipo radiobutton en los que tan solo uno de ellos será seleccionable.
  5. checkbox : un campo de html tipo checkbox.
  6. password : muestra un input de tipo "password" que ocultará el texto que se le introduzca.
  7. upload : genera un campo para poder subir archivos a la web mediante POST.

2. Propiedades del campo (field_properties)

Aquí se definirán y almacenarán propiedades más específicas de la columna, como sus atributos como campo HTML y otras opciones más centradas en según con qué tipo de campo estemos trabajando.

"HTML" esta etiqueta contendrá todos los atributos que queramos insertarle al campo HTML, como por ejemplo "COLS" o "ROWS" en caso de ser un tipo textarea.

"FORM" esta entrada define el comportamiento que tiene el campo en el formulario. Tiene distintas subetiquetas:

  • "label_name" (boolean) (TRUE/FALSE) si es true, aparecerá el nombre de formulario que le hemos asignado al campo en la vista.
  • "form_group" (string) (opcional) en caso de existir, el formulario generará un div con este string en forma "group_(string)" como id y clase agrupando todos los campos que tengan idéntico valor en esta etiqueta en el formulario.
  • "help_text" (string) (opcional) si se define aparecerá el texto que se ha introducido en este string en un span como mensaje anexo en el campo.
  • "choices" (string) (opcional) puede utilizarse tanto para el campo de tipo select o para el de radiobutton. En ambos casos se utilizará para mostrar las distintas opciones que tienen los campos.

Puede escribirse dejando que se defina implícitamnete el valor que tendrá cada entrada de estos dos campos de forma

"opción1,opción2,opción3"

O de forma explícita

"valor1:opción1,valor2:opción2,valor3:opción3"

  • "BBDD_select" (array) tan sólo funcional en caso de que se trate de un campo de tipo select. Tiene los subapartados: "where", "from", "select", "order".
  • "title_text" (string) Mostrará por encima del campo un título para este con el texto definido aquí.

ejemplo JSON:

"basic_properties":

{

"form":true,

"BBDD":true,

"column":"apellidos",

"form_name":"Apellidos",

"validation":

{

"new":"required|max_length[150]|xss_clean",

"edit":"required|max_length[150]|xss_clean" },

"type":"textarea"

},

"field_properties":

{

"HTML":

{

"COLS":"20",

"ROWS":"10"

},

"FORM":

{

"label_name":true,

"form_group":"nombres",

"help_text":"texto de ayuda que aparecerá alrededor del campo",

"title_text":"texto de título que irá por encima de tal" }

}