
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.

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.

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.
Fuente: Harris Raftopoulos
Artículos relacionados
Inicia la conversación
Hazte miembro de Antonio Jenaro para comenzar a comentar.
Regístrate ahora¿Ya estás registrado? Inicia sesión