Validar formularios es una tarea a la que debemos prestar la máxima importancia. Los formularios son, sin lugar a dudas, el canal de comunicación más importante en cualquier web interactiva. Son la puerta por la que entra la mayor parte de la información procedente del mundo exterior, información que debe validada antes de incorporarla en nuestra base de datos.

No solo por seguridad, que también, sino porque si validamos la información desde el inicio nos evitaremos quebraderos de cabeza en el futuro. Revisar los datos para eliminar inconsitencias puede ser una verdadera pesadilla.

Veamos que nos ofrece Caldera Forms para validar las entradas de nuestros usuarios

Herramientas para validar formularios en Caldera Forms

1.Formularios "inteligentes"

Una regla de oro es:  simplificar los formularios y solicitar solo la información necesaria. Un ejemplo clásico es al pagar una compra, no tiene sentido que nos pidan los datos de la tarjeta si ya hemos seleccionado Paypal como forma de pago.

Podemos dotar a nuestros formularios de esa inteligencia usando la pestaña Condicionales.

El uso es sencillo, creamos un grupo de condiciones, le damos un nombre y seguimos los pasos:

  1. Tipo: Elegimos entre mostrar, ocultar o desactivar los campos que seleccionaremos posteriormente
  2. Campo a comprobar: Lo usamos para seleccionar el campos del formulario que será comprobado
  3. Condición: Pues eso, si es igual, desigual, mayor, menor. etc wue el valor de referencia
  4. Valor de referencia: El contenido del campo se compara con este valor. Puede ser una constante, el contenido de otro campo, de una variable, etc.
  5. Campos a modificar: Seleccionamos los campos afectados por esta condición

Podemos crear tantas condiciones como sean necesarias dentro del un grupo condicional.

2. Validación condicional del formulario

Desde luego que no es suficiente con ocultar los campos, por eso entre los complementos gratuitos de Caldera Forms, tenemos uno gratuito que nos permite añadir nuestra propia lógica a la validación de formularios. Hablamos de Conditional fail,  un complementento hará fallar la validación del formulario si se cumplen las condiciones espcificadas por nosotros.

Una vez instalado y activado, lo tendremos disponible dentro de los procesadores del formulario, solo tenemos que añadirlo al formulario y configurarlo.

En la pestaña configurar, escribiremos el mensaje que verá el usuario como causa del error y en condicionales agregamos cuando queremos que esté procesador sea utilizado (o no). Podemos combinar varias condiciones según nuestras necesidades.


Validación personalizada de Formularios

¿Que pasa si las opciones incorporadas no son suficientes? Siempre sucede así, si el desarrollador ha previsto 1000 casos de uso, el nuestro será el 1001. Necesitamos una herramienta que nos permita validar formularios con total libertad de acción.

Caldera Forms nos ofrece varias soluciones para validar formularios. Eso si, tendremos que programar, aunque por suerte no será demasiado complicado.

1. Filtros para validar formularios

Podemos utilizar el filtros caldera_forms_validate_field_{xxx}, donde {xxx} identificará el tipo de campo, por ejemplo usaremos caldera_forms_validate_field_email para implementar nuestra lógica de validacion en los campos de tipo email.

Podemos limitarnos a un solo campo si utilizamos el identificador del campo (disponible en el diseñador del formulario). En ese caso tendremos algo así:  caldera_forms_validate_field_fld_xxxx

Esta opción está documentada aquí. Por ejemplo para forzar la longitud de los capos de texto a más de 8 caracteres podemos usar:

add_filter( 'caldera_forms_validate_field_text', function( $value ){
  if( 8 < strlen( $value ) ){return new WP_Error( '', 'La longitud mínima es 8 caracteres' );}
  return $value;
});

2. Procesador de validación personalizado

Es la opción más flexible, yo  personalmente me inclino por ella. Aquí se puede acceder a su documentación. La ventaja tener nuestro propio procesador personalizado es que podemos utilizarlo en el diseñador de formularios como cualquier otro complemento y validar selectivamente los campos que estimemos conveniente.

Para implementarlo, comenzamos por descargar los archivos del ejemplo. La interfaz de usuario sec define en config.php. Tenemos plena libertad para incorporar el codigo HTM y JS necesario. Tambén podemos dejar que Caldera Forms la cree por nosotros, solo tenemos que indicar la funcion donde definiremos los parámetros que necesitamos:

echo Caldera_Forms_Processor_UI::config_fields( rjcardenas_cf_validator_fields() );

La función rjcardenas_cf_validator_fields() nos permitirá seleccionar el campo a validar, está definida en el archivo principal del plugin y su estructura es la siguiente:

function rjcardenas_cf_validator_fields(){
  return array(
    array(
      'id' => 'field-to-validate',
      'type' => 'text',
      'required' => true,
      'magic' => true,
      'label' => __( 'Campo a validar.', 'rjc_cf_validator' )
    ),
  );
}

Simplemente define un input de HTML. He destacado el parámetro magic, porque su activación nos permitirá utilizar las etiquetas mágicas de Caldera Forms.

Otras funciones a modificar son rjcardenas_cf_validator_is_valid( $value ) que devolverá true o false al evaluar el valor del campo y rjcardenas_validator( array $config, array $form ) que dependiendo del resultado,  mostrará al usuario los mensajes de error que definamos.

Los archivos para descargar el plugin modificado por mí están disponibles aquí. También es posible modificar el ejemplo de la documentación.


Caso práctico

El motivo de este artículo es una consulta que recibí hace poco. Necesitaba poder limitar la seleccion del usuario a un máximo de 3 opciones en listas desplegables, casillas de selección y campos similares.

He modificado el plugin propuesto en la documentación para adaptarlo a este caso y este es el resultado:

Una recomendación personal, no intententeis viajar al Polo Sur.;-)


Conclusión

Hemos visto un caso práctico de como podemos personalizar Caldera Forms para validar formularios sin ninguna restricción. Por cosas como esta sigue siendo mi plugin favorito para comentarios. Su versión gratuita incorpora muchas funcionalidades premium.

También me he centrado en la validacion en el lado del servidor. Podemos utilizar eventos de JS expuestos por Caldera Forms para  validar formularios en el navegador. Sin embargo, su programación es más compleja y pienso que no es necesaria en formularios sencillos.

¿Qué plugin usas en tus formularios? No lo dudes y únete a la discusión. Seguro que tienes mucho que aportar

0 0 votes
Valoración del artículo
Suscribir
Notificar de
guest
0 Comentarios
Inline Feedbacks
View all comments