如何在laravel 8中将验证规则和消息返回为API的JSON



我正在构建一个API,我想用表单请求验证输入字段。

我不知道如何在控制器中的存储方法中以json形式返回消息和规则

当字段重复或为空时,我希望得到验证。

当返回$message$rules时,带有return response()->json($message)的json出现错误并说:TypeErrors : Arguments 2 passed , must be of the type array , object given

我查看了这个链接,它没有帮助https://laracasts.com/discuss/channels/laravel/how-to-send-validation-errors-as-json-to-view

我的店铺类别请求:


public function rules()
{
$rules =  [
'parent_id' => ['sometimes', 'required' , 'numeric'],
'description'=>['required','max:500'],
'status'=>['required'],
];
if($this->method() == 'POST'){
$rules['title'] = ['required','max:20', Rule::unique('categories')];
}else{
$rules['title'] = ['required','max:20' ,Rule::unique('categories')->ignore($this->category['id'])];
}
return $rules;
}


public function messages()
{
$message=[
'title.unique'=>'عنوان نباید تکراری باشد',
'title.required'=>'لطفا عنوان را وارد کنید',
'title.max'=>'تعداد حروف عنوان نباید بیشتر از ۲۰ باشد',
'description.required'=>'لطفا توضیحات را وارد کنید',
'description.max'=>'تعداد حروف توضیحات نباید بیشتر از ۵۰۰ باشد',
'status.required'=>'لطفا وضعیت مورد نظر خود را انتخاب کنید' ,

];
return array_merge(parent::messages(), $message);
}
}

这是我在类别控制器中的存储方法:

public function store(StoreCategoryRequest $request)
{
$validatedData = $request->all();
$category = Category::create($validatedData);

return response()->json([
"success" => true,
"message" => "successful",
"data" => $category
]);
}

谢谢:***

应该不需要将验证消息传递给JSON响应。当验证失败时,Laravel将自动返回带有错误的响应,并且不会继续执行控制器中的代码。

还有一些预定义的验证错误消息也可以本地化。您可以在resources/lang/en/validation.php中找到它们-也可以考虑将自定义消息放在那里。

要以JSON的形式检索验证错误,请在请求的标头中添加值为application/JSON的键Accept

最新更新