Método Rule::contains() de Laravel: validación fluida y consistente para arrays

  • Publicado el 22 julio, 2025
  • Palabras: 238

El sistema de validación de Laravel se volvió más consistente con la incorporación del método Rule::contains() para arrays, coincidiendo con el patrón de interfaz fluida con el que ya está familiarizado de otras reglas de validación.

Método Rule::contains() de Laravel: validación fluida y consistente para arrays

El ecosistema de Laravel siempre ha priorizado la consistencia y la experiencia del desarrollador, y el nuevo método Rule::contains() ejemplifica esta filosofía a la perfección. Si bien Laravel ha admitido desde hace tiempo reglas de validación fluidas a través de la clase Rule para escenarios como Rule::in(), Rule::exists() y Rule::unique(), la validación de arrays con la regla contains requería recurrir a una sintaxis basada en cadenas con concatenación manual.

 

El método Rule::contains() lleva la validación de arrays al mismo ecosistema de interfaz fluida, eliminando la necesidad de una engorrosa creación de cadenas y haciendo que sus reglas de validación sean más legibles y fáciles de mantener.

 

#Ejemplo práctico

Considere un sistema de gestión de usuarios donde necesita validar que los roles enviados contengan al menos un rol administrativo. Anteriormente, esto requería la construcción manual de cadenas:

 

use Illuminate\Validation\Rule;

enum Role: string
{
    case Admin = 'admin';
    case Editor = 'editor';
    case Viewer = 'viewer';
    case Moderator = 'moderator';
}

// Before: Manual string concatenation
Validator::make($request->all(), [
    'roles' => [
        'required',
        'array',
        'contains:'.implode(',', array_column([Role::Admin, Role::Editor], 'value')),
    ],
]);

// After: Clean fluent interface
Validator::make($request->all(), [
    'roles' => [
        'required',
        'array',
        Rule::contains([Role::Admin, Role::Editor]),
    ],
]);

$validRequest = [
    'roles' => [
        Role::Admin->value,
        Role::Viewer->value
    ]
];

 

Este enfoque es especialmente valioso al trabajar con enumeraciones, sistemas de roles dinámicos o cualquier escenario donde se necesite validar que un array contenga valores específicos de un conjunto predefinido. La interfaz fluida aclara inmediatamente la intención de validación y reduce la carga cognitiva de analizar cadenas concatenadas.

 

El método Rule::contains() también se integra a la perfección con otras reglas de validación de arrays y mantiene la coherencia con la API de validación más amplia de Laravel. Esta coherencia reduce los cambios de contexto y hace que las reglas de validación sean más predecibles para los desarrolladores que ya están familiarizados con los patrones de Laravel.

Antonio Jenaro

Desarrollador backend especializado en PHP y Laravel, con sede en Santander, Cantabria. Más de 15 años de experiencia en el desarrollo de aplicaciones web a medida y en la modernización de código heredado.

Archivado en:

Fuente: Harris Raftopoulos

Artículos relacionados

Validación única de Laravel para múltiples columnas
281

Validación única de Laravel para múltiples columnas

Validación de URL en Laravel con el método isUrl
666

Validación de URL en Laravel con el método isUrl

Validación de correo electrónico en Laravel con la regla de validación email
500

Validación de correo electrónico en Laravel con la regla de validación email

Inicia la conversación

Hazte miembro de Antonio Jenaro para comenzar a comentar.

Regístrate ahora

¿Ya estás registrado? Inicia sesión