Dar*_*ama 82 php laravel laravel-5.4
我尝试在Laravel中验证数组POST:
$validator = Validator::make($request->all(), [
"name.*" => 'required|distinct|min:3',
"amount.*" => 'required|integer|min:1',
"description.*" => "required|string"
]);
Run Code Online (Sandbox Code Playgroud)
我发送空POST并将其if ($validator->fails()) {}作为False.这意味着验证是正确的,但事实并非如此.
如何在Laravel中验证数组?当我提交表格时input name="name[]"
Fil*_*bol 180
星号(*)表示您要检查数组中的VALUES,而不是实际的数组.
$validator = Validator::make($request->all(), [
"name" => "required|array|min:3",
"name.*" => "required|string|distinct|min:3",
]);
Run Code Online (Sandbox Code Playgroud)
在上面的例子中:
编辑:从Laravel 5.5开始,您可以直接在Request对象上调用validate()方法,如下所示:
$data = $request->validate([
"name" => "required|array|min:3",
"name.*" => "required|string|distinct|min:3",
]);
Run Code Online (Sandbox Code Playgroud)
Nis*_*ana 23
我有这个数组作为我的HTML + Vue.js数据网格/表中的请求数据:
[0] => Array
(
[item_id] => 1
[item_no] => 3123
[size] => 3e
)
[1] => Array
(
[item_id] => 2
[item_no] => 7688
[size] => 5b
)
Run Code Online (Sandbox Code Playgroud)
并使用它来验证哪些工作正常:
$this->validate($request, [
'*.item_id' => 'required|integer',
'*.item_no' => 'required|integer',
'*.size' => 'required|max:191',
]);
Run Code Online (Sandbox Code Playgroud)
Pra*_*ahu 12
稍微复杂一点的数据,@Laran 和 @Nisal Gunawardana 的答案的混合
[
{
"foodItemsList":[
{
"id":7,
"price":240,
"quantity":1
},
{
"id":8,
"quantity":1
}],
"price":340,
"customer_id":1
},
{
"foodItemsList":[
{
"id":7,
"quantity":1
},
{
"id":8,
"quantity":1
}],
"customer_id":2
}
]
Run Code Online (Sandbox Code Playgroud)
验证规则将是
return [
'*.customer_id' => 'required|numeric|exists:customers,id',
'*.foodItemsList.*.id' => 'required|exists:food_items,id',
'*.foodItemsList.*.quantity' => 'required|numeric',
];
Run Code Online (Sandbox Code Playgroud)
编写验证和授权逻辑的推荐方法是将该逻辑放在单独的请求类中。这样,您的控制器代码将保持干净。
您可以通过执行创建请求类 php artisan make:request SomeRequest
在Request类的rules()方法中定义验证规则
//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
]
];
}
Run Code Online (Sandbox Code Playgroud)
在您的控制器中编写如下的路由功能
public function someFunction(SomeRequest $request)
{
//request is already validated before reaching this point
//your controller logic goes here
}
Run Code Online (Sandbox Code Playgroud)
请求类带有验证前后的钩子/方法,可以根据业务逻辑和特殊情况自定义钩子/方法,以修改请求类的正常行为。
您可以为类似类型的请求(例如Web和api请求)创建父请求类,然后将一些通用请求逻辑封装在这些父类中。
| 归档时间: |
|
| 查看次数: |
91071 次 |
| 最近记录: |