如何在Laravel中验证数组?
问题描述:
我尝试在Laravel中验证数组POST:
I try to validate array POST in Laravel:
$validator = Validator::make($request->all(), [
"name.*" => 'required|distinct|min:3',
"amount.*" => 'required|integer|min:1',
"description.*" => "required|string"
]);
我发送空的POST并将此if ($validator->fails()) {}
用作False
.这意味着验证是正确的,但事实并非如此.
I send empty POST and get this if ($validator->fails()) {}
as False
. It means that validation is true, but it is not.
如何在Laravel中验证数组?当我使用input name="name[]"
How to validate array in Laravel? When I submit form with input name="name[]"
答
星号(*)表示您要检查数组中的值,而不是实际数组中的值.
Asterisk symbol (*) means that you want to check VALUES in the array, not the actual array.
$validator = Validator::make($request->all(), [
"name" => "required|array|min:3",
"name.*" => "required|string|distinct|min:3",
]);
在上面的示例中:
- 名称"必须是至少包含3个元素的数组.
- 名称"数组中的值必须是不同的(唯一)字符串,至少3个字符长.
编辑:从Laravel 5.5开始,您可以像这样直接在Request对象上调用validate()方法:
Since Laravel 5.5 you can call validate() method directly on Request object like so:
$data = $request->validate([
"name" => "required|array|min:3",
"name.*" => "required|string|distinct|min:3",
]);