Funciones de validación personalizadas en CodeIgniter

CodeIgniter es un framework MVC que facilita muchas tareas al desarrollador. Una de ellas es la validación. Se dispone de una librería especial llamada Form Validation que tiene varias funciones que permiten chequear campos de formulario de manera muy sencilla. Se incluye la validación por tipo de dato, rangos, por caracteres en cadenas e incluso correos electrónicos, que son bastante comunes en la tarea cotidiana del programador web.

Sin embargo, siempre es bueno tener la posibilidad de incluir nuestras propias funciones de validación. CodeIgniter permite crearlas y mantener a la vez la forma en que funciona la librería. ¿Cómo se logra? Con la creación de callbacks, es decir, funciones que son llamadas de forma interna por la librería.

Veamos un ejemplo:

El código anterior representa un controlador genérico de un formulario. Se carga la librería form_validation y luego se definen las reglas de validación. El método set_rules recibe tres parámetros: el primero es el atributo name del campo de formulario que se quiere asociar, el segundo es el nombre que nosotros le damos al campo y el tercero es a qué tipo de validación debe someterse. Existen palabras clave que definen chequeos puntuales. Por ejemplo, trim extrae los espacios al principio y al final, required exige que no sea vacío, max_lenght y min_lenght se encargan de verificar la longitud de las cadenas. Se pueden usar individualmente o combinarlos, utilizando el símbolo | como separador.

Debajo, se definen los mensajes de validación. Son los textos que se mostrarán cuando la entrada de datos sea incorrecta. El método set_message lleva dos parámetros: el primero es el tipo de validación y el segundo es el mensaje. Si no se define un mensaje, CodeIgniter igual tiene definido uno por defecto, al menos para las funciones de validación nativas.

Luego, aparece la estructura condicional que define si el formulario enviado pasó o no la validación. La clave es comparar el valor devuelto por el método run de la librería.

Bien, eso a modo de repaso. Como ven, en este caso tenemos tres campos de formulario a validar: frase, autor y etiquetas. La particularidad es que frase tiene un tipo de validación especial que se llama callback_limite. Esa es la forma de decirle al framework que hay una función de validación personalizada. La palabra callback y el guión bajo son obligatorios.

En alguna parte de ese mismo controlador, se debe definir la función propiamente.

Noten que no se usa la palabra callback ni el guión bajo. Solamente se incluye el nombre de la función. Recibe un parámetro por defecto, que es el valor del campo asociado. En este ejemplo, el valor del campo frase. Dentro de la función se puede hacer lo que se necesite teniendo en cuenta que se debe devolver TRUE o FALSE para definir el estado de la validación.

Pasando más parámetros al callback

En el ejemplo de función de validación, limite chequea si la variable que viene como parámetro (un string) comienza con la letra A. Es decir, que solo necesita la variable asociada al campo para funcionar. ¿Pero qué ocurriría si se necesitaran más parámetros?

Pensemos el siguiente ejemplo. Imaginen que en base al campo frase y al campo autor, el sistema que estamos desarrollando debe armar un tweet para enviarlo posteriormente a través de Twitter. Si vamos a utilizar esta red social, no podemos olvidar que el límite máximo de caracteres para hacer un tweet es de 140. Por lo tanto, al combinar frase y autor, deberemos chequear que no haya exceso de caracteres. Pero para eso, nuestro callback necesita un segundo parámetro: el autor.

Para lograr esto, debemos agregar el parámetro cuando se definen las reglas de validación.

Se abren corchetes y se agrega el valor necesario. Se utiliza el valor que viene por post para introducir el contenido del campo autor. Si se necesitan más parámetros, se añaden separados por coma de esta misma forma.

Luego, en el callback.

Se agrega el segundo parámetro sin problemas y se usa naturalmente dentro de la función. Por supuesto, si hubieran sido agregados más parámetros, también se deberían haber añadido separados por coma luego de $autor.

Y eso es todo. La validación con funciones personalizadas está bien documentada en el manual de CodeIgniter, aunque siempre hay algunos detalles que quedan  dudosos, como por ejemplo el de añadir más parámetros. Espero que este artículo los haya orientado mejor.

Soy programador web y me desempeño como Líder Técnico en Polar Bear Development. Trabajo con tecnologías como PHP, Javascript, MySQL y HTML5 para el desarrollo de sitios y sistemas web. Me especializo en Zend Framework 2 y otros frameworks MVC, como también en WordPress y otros CMS. Lidero equipos de desarrolladores trabajando con Scrum. Vivo en Buenos Aires, Argentina.
 

2 thoughts on “Funciones de validación personalizadas en CodeIgniter

  1. Excelente tuto! de a poco le voy agarrando el “gusto” a CodeIgniter ya que tiene una gran documentación y comunidad. Muchas gracias Alejandro por compartir tus conocimientos..

  2. Gracias Marco

    Hay un par de artículos más por hacer sobre CodeIgniter. Seguramente los vaya escribiendo en las siguientes semanas. A pesar de algunos problemas que le encontré, me ha servido bastante. Está bueno que estés aprovechando este framework.

    Saludos

Comments are closed.