Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

394
Vistas
Laravel 5: valide la matriz según sea necesario, pero permita que se pase una matriz vacía

Estoy validando una solicitud en Laravel 5.4 con el validador, consulte la documentación: https://laravel.com/docs/5.4/validation#validating-arrays

Básicamente, es este código en el Controlador:

 public function createSomeResource(Request $request) { $this->validate($request, [ 'items' => 'required', ]; ... }

Me gustaría requerir la presencia del campo "elementos" y este código lo hace, pero el problema es que la validación falla cuando el campo "elementos" es una matriz vacía, es decir

 { "fields": [] }

, que es un comportamiento no deseado. Sé que ese es el comportamiento documentado del parámetro "requerido", pero no veo ninguna solución "limpia". Probé también:

 public function createSomeResource(Request $request) { $this->validate($request, [ 'items' => 'required_unless:items,[]', ]; ... }

pero también falla, probablemente porque la documentación dice que funciona con un campo diferente después de la cláusula "required_unless", pero no estoy totalmente seguro de ello.

¿Podría sugerirme una forma de requerir la presencia del campo "elementos" sin prohibir la matriz vacía?

EDITAR: otro enfoque "obvio" que me ha venido a la mente es usar la regla "presente | matriz" y casi hace lo que quiero, pero desafortunadamente, una cadena vacía también pasa esa regla de validación, lo que tal vez sea un error en Laravel, tal vez no: abrí un problema en el repositorio de Laravel github: https://github.com/laravel/framework/issues/18948

about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Prueba esto:

 public function createSomeResource(Request $request) { $this->validate($request, [ 'items' => 'present|array', ]; ... }
about 4 years ago · Santiago Trujillo Denunciar

0

Probar:

 public function createSomeResource(Request $request) { $this->validate($request, [ 'items' => 'required|array|min:1', ]; ... }

Del documento de Laravel:

min:value El campo bajo validación debe tener un valor mínimo. Las cadenas, los valores numéricos, las matrices y los archivos se evalúan de la misma manera que la regla de tamaño.

about 4 years ago · Santiago Trujillo Denunciar

0

1) Se requiere matriz

2) El valor de toda la matriz no es nulo ni está vacío

 public static $rules = [ 'category' => 'required|array|min:1', 'category.*' => 'required', ];
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda