Laravel请求验证(带有数组的请求)



我正在使用Laravel和VueJs开发一个应用程序。我使用了以下表单验证规则:

public function rules()
{
$rules = [
'id.*'=>'required|integer',
'job_id.*'=>'required|integer',
'satisfied.*'=>'nullable',
'client_comments.*'=>'nullable',
'improvements.*'=>'nullable',
'rating.*'=>'integer|max:10|min:0'
]; 
return $rules;
}

此外,我正在向Laravel控制器发送以下axios请求。但是,验证不起作用。有人能帮忙吗?

Laravel控制器收到的请求如下:

array:2 [
0 => array:7 [
"client_comments" => null
"id" => 34
"improvements" => null
"job_id" => 1
"quality_cycle_id" => 14
"rating" => "10"
"satisfied" => null
]
1 => array:7 [
"client_comments" => null
"id" => 35
"improvements" => null
"job_id" => 3
"quality_cycle_id" => 14
"rating" => "9"
"satisfied" => null
]
]

我只是花了很多努力来解决这个问题,但都没有奏效。在同一个应用程序中,我对单个请求进行了多次验证。但这个请求是以数组内部的数组的形式发出的,如上所述。

如果有人帮忙,不胜感激。

感谢

您可以尝试这样验证:

$request->validate($request, [
'*.id'=>'required|integer',
'*.job_id'=>'required|integer',
'*.satisfied'=>'nullable',
'*.client_comments'=>'nullable',
'*.improvements'=>'nullable',
'*.rating'=>'integer|max:10|min:0']);

它对我来说很好

您的字段位于数组内部,而不是数组。它适用于输入阵列id[], job_id[], etc..

试试这个,

public function rules()
{
$rules = [
'*.id'=>'required|integer',
'*.job_id'=>'required|integer',
'*.satisfied'=>'nullable',
'*.client_comments'=>'nullable',
'*.improvements'=>'nullable',
'*.rating'=>'integer|max:10|min:0'
]; 
return $rules;
}

请求数据应该在指定的文件中,如items,您可以使用将其转储出去

dd($request->input('items'));

它打印一个数组。因此,为了验证该数组,您可以使用以下规则:

public function rules()
{
return [
'items.*.id'=>'required|integer',
'items.*.job_id'=>'required|integer',
'items.*.satisfied'=>'nullable',
'items.*.client_comments'=>'nullable',
'items.*.improvements'=>'nullable',
'items.*.rating'=>'integer|max:10|min:0',
];
}

最新更新