Codeigniter Form Validation Extension. Extendiendo Codeigniter

En una aplicación web la validación de datos es esencial tanto del lado del cliente (browser) como del lado del servidor. El framework Codeigniter cuenta con una libreria base para validaciones del lado del servidor. Lo que veremos en este post es una extensión para la libreria propia de Codeigniter, esta extensión se llama Codeigniter Form Validation Extension, de código abierto y disponible en Github.

Características de Codeigniter Form Validation Extension

  • Evita el re-envío de variables POST. Por default, la libreria de validaciones de Codeigniter al encontrar errores en los datos, deja el formulário disponible para un re-envio de datos. Es decir, que luego de ejecutar una validación, al presionar F5(Actualizar) lo que ocurrirá es que los datos serán re-enviados (a menos que canceles esa operación). Esto puede convertirse en un problema. La librería presentada en este post, resuelve el problema aplicando un redirect como veremos mas adelante.
  • Recibe la lista de errores por medio de flash data. Los errores son enviados utilizando el método set_flashdata de la clase Session.
  • Recibe los mensajes (de error o de suceso) por medio de flash data.
  • Personalización de los mensajes (de error o de suceso). Podemos personalizar el mensaje que recibamos (sea de error o de suceso) utilizando una string como template.
  • Validaciones por medio de Ajax. Si el envío de datos es por medio de ajax, el resultado automáticamente será un objeto JSON, que contendrá el mensaje de error o el mensaje de suceso. Incluso es posible el envío de datos adicionales (en el mensaje de suceso).

Instalación

1. Descarga la última versión liberada

2. Copia la carpeta “FormValidation” y el archivo MY_Form_validation  dentro de tu carpeta “libraries” de Codeigniter. Deberá verse de esta forma:

3. Listo. Ahora podemos utilizar la librería.

2 Ejemplos prácticos de Codeigniter Form Validation

Codeigniter Form Validation Sin Ajax

1. El formulário

Primero haremos una view para el formulario:

Como vemos en las líneas 8, 20, 24, 28, 29, 30 y 34, dentro del formulario hacemos uso de funciones helper setValue y setChecked. Estas funciones forman parte de nuestra librería extendida.

Ahora nos toca hacer el método controller que haga el llamado a la view:

2. La validación

Tambien hacemos un método controller para la validación:

Este método controller se encarga de validar los datos, guardarlos (si fuera el caso) y hacer un redirect hacia el formulario inicial (o hacia la URL que sea definida). En la línea 20, el método validate recibe 2 parámetros de tipo callback, El primer parámetro será la función a ejecutarse al no encontrarse errores en la validación, y será aqui donde deberá colocarse la operación insert hacia una base datos si fuera necesário. El segundo parámetro sirve para ejecutar alguna otra operación en caso de encontrarse errores de validación. El segundo parámetro es opcional.

Mas adelante veremos que este mismo controller será utilizado para la validación con Ajax. Es decir, que el controller detecta el tipo de request para enviar el resultado adecuado. Si es una request (petición) Ajax, el resultado será una respuesta JSON, caso contrario será un redirect.

El resultado final se verá de la siguiente forma:

codeigniter form validation extension error message

 

codeigniter form validation extension success message

Como vemos, los mensajes (de error y de suceso) son presentados en la parte superior del formulário bajo un template estándar que fue definido con el método setTemplate. Si presionamos F5, ocurrirá que el formulário vuelve a su estado original (vacío) y los datos NO serán reenviados.

Codeigniter Form Validation CON AJAX.

Para hacer validaciones por medio de Ajax, será necesario el plugin jQuery formHelper.

1. El formulário

Podemos ver que el formulário es el mismo que usamos en el primer ejemplo, la única diferencia es que  no necesitamos las funciones helper (setValue y setChecked) para rellenar el formulário.

Antes de cerrar la tag </body> entramos a lo que es javascript y jQuery con el siguiente código:

Con este código javascript, automáticamente enviaremos los datos via Ajax, recibiremos como respuesta un objeto JSON y será mostrado el mensaje correspondiente sobre el div con id=”message” (Linea 4 del formulario). Vemos en la línea 6 del código Javascript, que el plugin jQuery nos permite personalizar el mensaje con clases CSS como son “alert-danger” para los errores y “alert-success” para el mensaje de suceso.

2. La Validación

Será el mismo método controller utilizado en el ejemplo 1.

Esto se debe a que la libreria Codeigniter Form Validation Extension se encarga de enviar el tipo de respuesta conforme sea la solicitud. Si es una solicitud (request) Ajax, la repuesta (response) será un objeto JSON, caso contrario la respuesta será un redirect como fue explicado en el primer ejemplo.

Extendiendo Validaciones

Codeigniter Form Validation Extension, nos permite de manera fácil incrementar funciones de validación. Tenemos que hacer únicamente 2 pasos.

1. Crear la función de validación. Abre el archivo FormValidation/validators.php y adiciona tus propias funciones de validación. Recordando que la función deberá retornar TRUE o FALSE.

En el ejemplo presentado, verificamos si el valor recibido es un código Zip (Código postal) válido, y para eso lo evaluamos con una expresión regular.

2. Utilizar la función en las reglas de validación.

Palabras finales

Si esta librería cumple con tus espectativas, te invito a visitar y calificar con una estrella el repositório en Github. Aqui está el Link, te agradeceré bastante.
También puedes compartir tu opinión de este post introductorio escribiendome en los comentários. Finalmente te invito a visitar la sección de “Mis proyectos” para ver si encuentras algo que pueda ayudarte en el desarrollo de tus sistemas como por ejemplo “PHP Quick Menu”. Hasta un próximo post.

 

Escribir un comentario

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