Я хочу сделать валидатор laravel, который проверяет поля внутри неименованного массива (0,1,2,3), который находится внутри массива
поэтому мой массив похож на
array [ //the form data "items" => array:2 [ //the main array i want to validate 0 => array:2 [ // the inner array that i want to validate its data "id" => "1" "quantity" => "1000" ] 1 => array:2 [ "id" => "1" "quantity" => "1000" ] // other fields of the form, ] ]
так что я хочу что-то вроде
$validator = Validator::make($request->all(), [ 'items.*.id' => 'required' //notice the star * ]);
Laravel 5.2
Синтаксис в вопросе теперь поддерживается
http://laravel.com/docs/master/validation#validating-arrays
Laravel 5.1
Сначала создайте валидатор со всеми вашими другими правилами. Используйте правило array
для элементов
$validator = Validator::make($request->all(), [ 'items' => 'array', // your other rules here ]);
Затем используйте each
метод Validator для применения набора правил к каждому элементу в массиве items.
$validator->each('items', [ 'id' => 'required', 'quantity' => 'min:0', ]);
Это автоматически установит эти правила для вас …
items.*.id => required items.*.quantity => min:0
https://github.com/laravel/framework/blob/5.1/src/Illuminate/Validation/Validator.php#L261
Вы могли бы просто сделать что-то вроде этого:
$rules = []; for($i = 0; $i < 10; $i++) { $rules["items.$i.id"] = "required"; } $validator = \Validator::make($request->all(), $rules);