formrequest float example crear array php laravel laravel-5.4

php - float - ¿Cómo validar la matriz en Laravel?



laravel validation float (4)

Intento validar la matriz POST en Laravel:

$validator = Validator::make($request->all(), [ "name.*" => ''required|distinct|min:3'', "amount.*" => ''required|integer|min:1'', "description.*" => "required|string" ]);

Envío POST vacío y obtengo esto if ($validator->fails()) {} como False . Significa que la validación es verdadera, pero no lo es.

¿Cómo validar la matriz en Laravel? Cuando envío el formulario con input name="name[]"


Debe realizar un bucle sobre la matriz de entrada y agregar reglas para cada entrada como se describe aquí: Reglas de bucle

Aquí hay un código para ti:

$input = Request::all(); $rules = []; foreach($input[''name''] as $key => $val) { $rules[''name.''.$key] = ''required|distinct|min:3''; } $rules[''amount''] = ''required|integer|min:1''; $rules[''description''] = ''required|string''; $validator = Validator::make($input, $rules); //Now check validation: if ($validator->fails()) { /* do something */ }


El símbolo de asterisco (*) significa que desea verificar VALORES en la matriz, no en la matriz real.

$validator = Validator::make($request->all(), [ "name" => "required|array|min:3", "name.*" => "required|string|distinct|min:3", ]);

En el ejemplo anterior:

  • "Nombre" debe ser una matriz con al menos 3 elementos.
  • Los valores en la matriz "nombre" deben ser cadenas distintas (únicas), de al menos 3 caracteres de longitud.

EDITAR: desde Laravel 5.5 puede llamar al método validate () directamente en el objeto Request de la siguiente manera:

$data = $request->validate([ "name" => "required|array|min:3", "name.*" => "required|string|distinct|min:3", ]);


La forma recomendada de escribir la lógica de validación y autorización es colocar esa lógica en clases de solicitud separadas. De esta manera, el código de su controlador permanecerá limpio.

puede crear una clase de solicitud ejecutando php artisan make:request SomeRequest

en el método de las reglas de la clase Solicitud () defina sus reglas de validación

//SomeRequest.php public function rules() { return [ "name" =>[ ''required'', ''array'', //input must be an array ''min:3''//there must be three members in the array ], "name.*" => [ ''required'', ''string'',//input must be of type string ''distinct'',//members of the array must be unique ''min:3''//each string must have min 3 chars ] ]; }

en su controlador escriba su función de ruta de esta manera

public function someFunction(SomeRequest $request) { //request is already validated before reaching this point //your controller logic goes here }

La clase de solicitud viene con ganchos / métodos de validación previa y posterior que se pueden personalizar según la lógica de negocios y casos especiales para modificar el comportamiento normal de la clase de solicitud.

Puede crear clases de Solicitud principal para solicitudes de tipo similar para, por ejemplo, solicitudes web y API y luego encapsular alguna lógica de solicitud común en estas clases principales.


Tengo esta matriz como mi solicitud de datos de una tabla / cuadrícula de datos HTML + Vue.js:

[0] => Array ( [item_id] => 1 [item_no] => 3123 [size] => 3e ) [1] => Array ( [item_id] => 2 [item_no] => 7688 [size] => 5b )

Y use esto para validar qué funciona correctamente:

$this->validate($request, [ ''*.item_id'' => ''required|integer'', ''*.item_no'' => ''required|integer'', ''*.size'' => ''required|max:191'', ]);