Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

387
Views
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 answers
Answer question

0

Prueba esto:

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

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!