Saltar al contenido

En el desarrollo de aplicaciones web con Laravel, la validación de datos es una tarea fundamental para asegurar la integridad y seguridad de la información que se maneja. Laravel ofrece una serie de reglas de validación por defecto que facilitan este proceso. Sin embargo, cuando trabajamos específicamente con la validación de dígitos en números, las reglas tradicionales como min y max pueden no ser las más adecuadas. Afortunadamente, a partir de Laravel 9.26, se han introducido dos nuevas reglas que simplifican esta tarea: min_digits y max_digits.

Problema con las Reglas min y max para Dígitos

Tradicionalmente, para validar números en Laravel, se utilizan las reglas min y max. Estas reglas verifican que el valor numérico esté dentro de un rango específico. Por ejemplo:

En este caso:

  • min:3 asegura que el número sea al menos 3.

  • max:5 asegura que el número no sea mayor a 5.

Problema: Si intentamos validar la cantidad de dígitos de un número utilizando min y max, la validación no funcionará como se espera. Por ejemplo, los números 3, 4 y 5 pasarán la validación porque están dentro del rango numérico, mientras que números como 6 o 1000 fallarán, aunque tengan la cantidad de dígitos que podríamos considerar válida en ciertos contextos.

Esto se debe a que las reglas min y max están diseñadas para validar el valor numérico, no la cantidad de dígitos. Por lo tanto, si nuestro objetivo es validar la cantidad de dígitos de un número, estas reglas no son adecuadas.

Solución: Uso de min_digits y max_digits

Para resolver este inconveniente, Laravel 9.26 introdujo las reglas min_digits y max_digits, diseñadas específicamente para validar la cantidad de dígitos de un número, independientemente de su valor numérico.

Ejemplo de Uso

En este caso:

  • min_digits:3 asegura que el número tenga al menos 3 dígitos.

  • max_digits:5 asegura que el número no exceda los 5 dígitos.

Ventajas:

  • Precisión: Validar la cantidad de dígitos en lugar del valor numérico.

  • Flexibilidad: Aplicable en escenarios donde el número puede ser mayor que los límites establecidos, pero la cantidad de dígitos es lo que realmente importa.

Casos de Uso Comunes

  1. Números de Teléfono:

  2. Asegura que el número de teléfono tenga exactamente 10 dígitos.

  3. Códigos Postales:

  4. Verifica que el código postal tenga exactamente 5 dígitos.

  5. Identificación Fiscal:

  6. Garantiza que el número de identificación fiscal tenga 13 dígitos.

Implementación Completa con Form Requests

En Laravel 11, la validación de formularios se maneja de manera más estructurada utilizando Form Requests. Esta metodología permite centralizar la lógica de validación, mejorando la organización y mantenibilidad del código.

Paso 1: Crear un Form Request

Utiliza el comando Artisan para generar un Form Request:

sail artisan make:request NumberValidationRequest

Este comando creará un archivo en app/Http/Requests/NumberValidationRequest.php.

Paso 2: Definir las Reglas de Validación

Abre el archivo recién creado y define las reglas de validación en el método rules():

Paso 3: Utilizar el Form Request en el Controlador

En tu controlador, reemplaza la validación tradicional por la inyección del Form Request. Por ejemplo, en NumberController.php:

Paso 4: Definir la Ruta

Asegúrate de tener definida la ruta que utiliza este controlador en routes/web.php o el archivo de rutas correspondiente:

Paso 5: Probar la Validación

Puedes probar la validación enviando una solicitud POST a /number con diferentes valores para el campo number. Por ejemplo:

  • Valido:

    {
        "number": 1234
    }

    Este número tiene 4 dígitos y pasará la validación.

  • No Válido:

    {
        "number": 12
    }

    Este número tiene solo 2 dígitos y fallará la validación con el mensaje: "El número debe tener al menos 3 dígitos."

    {
        "number": 123456
    }

    Este número tiene 6 dígitos y fallará la validación con el mensaje: "El número no debe exceder los 5 dígitos."

Consideraciones Adicionales

  • Compatibilidad: Asegúrate de que tu proyecto esté utilizando Laravel 9.26 o una versión posterior para aprovechar las nuevas reglas min_digits y max_digits.

  • Personalización de Mensajes: Puedes personalizar los mensajes de error para que sean más informativos y amigables para el usuario.

  • Combinar con Otras Reglas: Estas reglas pueden combinarse con otras reglas de validación según las necesidades de tu aplicación.

Conclusión

La validación de dígitos en Laravel es una tarea común que, hasta versiones recientes, podía ser un tanto limitada utilizando únicamente las reglas min y max. Con la introducción de min_digits y max_digits en Laravel 9.26, esta tarea se ha simplificado considerablemente, permitiendo una validación más precisa y acorde a las necesidades específicas de cada proyecto.

Implementar correctamente estas reglas no solo mejora la integridad de los datos, sino que también ofrece una mejor experiencia al usuario al proporcionar mensajes de error claros y específicos.

Para profundizar más en el desarrollo con Laravel y dominar todas sus funcionalidades, te invitamos a seguir nuestra Ruta de Aprendizaje Laravel 11, diseñada para llevarte desde los conceptos básicos hasta avanzados en el desarrollo con Laravel.

school Curso completo

Curso Laravel 12
Completo 2026

El único curso 100% actualizado que incluye Laravel 12, Livewire 3, Vue 3, React 19 e Inertia 2. Aprende con proyectos reales y las últimas funcionalidades.

access_time 8 horas de contenido
layers 4 tecnologías en 1
update 100% actualizado
code Proyectos prácticos
Ver Curso Laravel 12 arrow_forward

star Incluido en cualquier suscripción

Rutas de aprendizaje