El editor de DataTables (IX). Campos ocultos.

Facebooktwittergoogle_pluslinkedinmailFacebooktwittergoogle_pluslinkedinmail

Los campos ocultos, conocidos en el entorno HTML como de tipo hidden, son muy útiles en gran cantidad de ocasiones. Con carácter general, se emplean campos ocultos cuando queremos que un formulario envíe al servidor datos que se generan de forma dinámica en dicho formulario, o durante algún proceso JavaScript, pero que el usuario no debe poder modificar y, ni siquiera, visualizar.

En otras ocasiones, se emplean campos ocultos para pasar al formulario datos que proceden de variables y, que de otro modo, serían engorrosos de pasar, ya que pueden estar recargando un formulario y no aportan nada al usuario.

El editor de DataTables no podía ser ajeno a estas necesidades. En este artículo vamos a ver cómo emplear estos datos en un escenario un poco “forzado”, en el sentido de que podríamos prescindir de ellos. No importa. Nos servirá como ejercicio didáctico para aprender a manejar datos de tipo hidden. En un artículo posterior veremos un ejemplo en el que son, realmente, imprescindibles, pero no entenderíamos ese ejemplo sin conocer los contenidos de este artículo.

EL ESCENARIO

Vamos a partir de la base de datos que ya hemos empleado en alguna ocasión, con una tabla con datos de profesionales de una multinacional. Esta tabla se corresponde con la que publica el fabricante de DataTables en su web (www.datatables.net). En este ejemplo, le hemos añadido un campo más que refleja la fecha de la última modificación para aquellos registros que han sido actualizados con el editor. Aunque la fecha la podríamos sacar directamente de PHP, en el script que hace la edición, lo que vamos a hacer es crearla como un dato JavaScript, y mandarla como un campo oculto. El conjunto, una vez funcionando, podría tener un aspecto como el que ves a continuación, donde se ve la fecha de la última actualización (en aquellos registros que han sido modificados).

 En la columna de la derecha ves que hay registros que aún no han sido modificados (la mayoría de ellos). Son los que, cómo fecha de última edición, pone No disponible. Si seleccionas un registro y pulsas editar, verás que, tras grabar los cambios, aparece la fecha de la última edición. Esta no es visible, cómo hemos dicho, en el formulario de edición, sino que víaja como un campo oculto.

EL SCRIPT PRIMARIO

El script primario se llama articulo_editor_09.php. Lo que vemos en la definición del objeto editor para declarar el campo hidden es lo siguiente:

Cómo ves, al declarar el campo hidden sólo le asignamos el tipo y el nombre. Podríamos haberle puesto un valor por defecto, mediante el uso del la propiedad def:, que ya hemos visto en algún artículo para otros ejemplos. Sin embargo, aquí no lo hemos hecho, porque el valor se lo vamos a asignar dinámicamente, a través del evento preOpen. No es, desde luego, el modo más elegante de asignar un valor a un campo oculto (al menos, no en este ejemplo), pero nos servirá para aprender algo sobre este tipo de campos que, en artículos posteriores, nos resultará de utilidad.

El evento preOpen lo manejamos de la siguiente forma:

Cómo ves, esta vez la funcionalidad asignada al evento preOpen sólo se ejecuta si la acción es la edición. No se ejecuta para eliminación ni para nuevos registros. En dicha funcionalidad, lo único que se hace es crear un objeto de tipo Date con la fecha actual, en el formato que luego se usará para la base de datos (yyyy-mm-dd). Hemos hablado de este formato (ISO 8601) en anteriores artículos.

Lo que nos interesa es la línea resaltada, donde empleamos el método val() para asignar el valor deseado al campo oculto.

Por lo demás, el script primario no tiene nada nuevo. El resto del código, cuando lo analices, verás que se corresponde con conceptos que ya conocemos de otros artículos.

EL SCRIPT DE GRABACIÓN

El script que graba el formulario se llama crud_editor_09.php. Lo que nos interesa es la parte relativa a la edición, ya que es donde se graba el contenido del campo oculto en la base de datos. El código es el siguiente:

Cómo ves en la línea resaltada, procesamos este campo como otro cualquiera (cómo si fuera, por ejemplo, un campo de tipo text). El hecho de que sea un campo oculto no afecta para nada al procesado.

Como de costumbre, te dejo todos los scripts, y la estructura de la base de datos, en este enlace.

     

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *