Skip to content

Validar un NIF con Gravity Forms

Cuando pedimos a un usuario que introduzca su NIF en un campo de un formulario, tan importante como guardar ese dato es validar el dato antes de guardarlo, pues no tiene ningún sentido guardar un dato que no es válido y por tanto no vamos a poder usar para cualquiera que sea el cometido para el que le hemos pedido al usuario que nos lo proporcione.

Aunque Gravity Forms no trae de serie un tipo de campo específico para validar el NIF, afortunadamente, pone a nuestra disposición filtros con los que podemos validar cualquier dato introducido en un campo del formulario con nuestra propia función de validación. De esta manera no sólo podemos validar un NIF sino cualquier otro tipo de dato que necesitemos validar.

El acto de validar el NIF en Gravity Forms consistirá de dos partes claramente diferenciadas.

  1. Obtener el dato que el usuario ha introducido en el formulario y validarlo con nuestra función de validación de NIF.
  2. Si nuestra función de validación de NIF nos dice que el dato no es válido, se lo haremos saber a Gravity Forms y le proporcionaremos un mensaje de error de validación para el campo.

Función de validación del NIF

Si buscas un poco en Gooogle encontrarás que hay ya muchas funciones creadas para validar un NIF. Para el ejemplo que nos ocupa yo voy a usar esta. Que pertenece a un módulo de validación para Drupal que se encuentra bajo licencia GPL.

Pero tú puedes usar cualquier otra ya sea creada por un tercero o por ti mismo, lo importante es que sea capaz de comprobar correctamente la validez del NIF.

La función de validación del NIF debe devolvernos true o false en base a la validez del NIF introducido. Esta función que voy a usar en el ejemplo sirve tanto para personas físicas nacionales o extranjeras y empresas (por cierto, dato curioso, aunque la gente sigue usando el término CIF cuando se habla del identificador fiscal de una empresa, desde el año 2008 ese término no existe y se utiliza el término NIF tanto para personas físicas como para empresas).

Podemos añadir la función de validación del NIF usando el método clásico del archivo functions.php del theme (sólo si sabes lo que haces), o en un plugin que creemos a tal efecto, o incluso usando algún plugin para agregar fragmentos de código a WordPress. Lo importante es que de una manera u otra tengamos disponible la función de validación de NIF en nuestro WordPress para llamarla desde la función que engancharemos a continuación al filtro de validación de Gravity Forms.

Informando a Gravity Forms cuando el NIF no es válido

Gravity Forms nos proporciona dos filtros que podemos usar para realizar validaciones de datos:

En este caso, puesto que sólo queremos validar un campo del formulario, vamos a usar el primer filtro que está específicamente indicado para validar un único campo (aunque también se puede usar para validar varios campos) y resulta más sencillo de utilizar para los que no tienen demasiado experiencia en programación.

Con el fin, precisamente, de que nuestro código de validación se ejecute únicamente para el campo en cuestión del formulario concreto donde tenemos el campo, vamos a especificar tanto la id del formulario como la id del campo en el nombre del filtro tal como se indica en la documentación. De tal manera que si, por ejemplo, la id del formulario es 1 y la id del campo para el NIF es 3, el nombre del filtro a usar sería gform_field_validation_1_3

La función completa sería quedaría de la siguiente forma:

Por último indicar que el tipo de campo que usaremos en el editor de formularios de Gravity Forms será el campo “Línea de texto“, ya que este campo carece de validación del tipo de dato introducido por parte de Gravity Forms y de esta manera sólo se aplicará nuestra función de validación de NIF.

A mí no me cuentes historias y dámelo hecho (WP way of life…)

Si no te has enterado de nada y le tienes pánico a eso de editar código fuente. No te preocupes, he creado un pequeño plugin que simplemente tienes que descargar el archivo zip desde Github, instalar y activar en tu WordPress como harías con cualquier otro plugin en formato zip.

Una vez activado el plugin cualquier campo de línea de texto al que añadas la clase CSS validar_nif en los ajustes del campo se le aplicará la validación del NIF.

Ahora ya no tienes excusa para no recopilar NIF válidos con Gravity Forms ;)

Published inGravity FormsWordPress

16 Comments

  1. Juan Pedrido Juan Pedrido

    Gracias por esta contribución.
    Muy fácil con “el no me cuentes historias”, funcionando y lo pondré en todos los formularios.

    • Samuel Aguilera Samuel Aguilera

      De nada Juan, me alegro de que te haya servido.

  2. Nacho Nacho

    Mil gracias, justo lo que estaba buscando y encima nos lo das hecho.

  3. Nacho Nacho

    Hola Samuel,

    Pedazo artículo! Muy útil.

    Aprovecho y te pregunto porque he observado que con tu plugin funciona correctamente pero utilizando Code Snippets no funciona.

    ¿Hay algo que se me escapa?

    Muchas gracias y que tengas buen día.

    • Samuel Aguilera Samuel Aguilera

      Hola Nacho, me alegro de que te haya gustado. Sin más detalles que “no funciona” me temo que poco te puedo responder.

  4. eurico eurico

    Hola Samuel. Gracias por tu plugin .
    Dime algo. ¿Es posible que el plugin valide el NIF europeo? Gracias.

  5. Samuel Aguilera Samuel Aguilera

    @eurico El plugin sólo valida NIF español, para cualquier otro tipo de validación tendrías que cambiar el código que se encarga de la validación.

  6. Nacho Nacho

    Hola Samuel,

    Funciona de lujo. Gracias por tu aporte.

    ¿Sabes cómo se podría hacer esta validación con Javascript?

    Muchas gracias.

    Saludos,
    -Nacho.

    • Samuel Aguilera Samuel Aguilera

      La validación de los valores de los campos en Gravity Forms se hace siempre al hacer clic en el botón de enviar el formulario, por lo que se hace siempre con PHP. Así que como Gravity Forms no tiene una función de validación basada en JavaScript, no hay filtros específicos para este cometido. Tendrías que elaborar tu propio sistema para la validación con JavaScript, al margen de Gravity Forms, como harías con cualquier otro formulario HTML.

  7. David Pérez David Pérez

    Gracias Samuel! buen aporte!

    • Samuel Aguilera Samuel Aguilera

      Me alegro de que te guste David 😉

    • Samuel Aguilera Samuel Aguilera

      Genial Mikel, me alegra saber que sigues activo 😉

  8. María José María José

    Muy buenas Samuel,

    Muchas gracias por la información, realmente útil. Lo que pasa que entiendo que no es capaz de validar si un DNI es real o no, en el sentido de que haya detrás unos datos reales del ciudadano. Por ejemplo, he visto que da por bueno un DNI generado por esta pagina https://www.generador-de-dni.com/validador-de-dni, y es un DNI que no es realmente real.

    Quiero decir ¿no es posible que valide si el DNI es de una persona real o no, no? porque entiendo que para eso tendría que conectar con alguna base de datos oficial

    • Samuel Aguilera Samuel Aguilera

      El único que podría dar por “real” un DNI es el estado, y que yo sepa no hay ningún servicio del estado que proporcione la información que buscas. Todo los validadores que conozco se limitan a validar que el formato del dato es correcto.

  9. Jaime Jaime

    Muchas Gracias por el aporte Samuel.

Leave a Reply

Your email address will not be published. Required fields are marked *