使用Laravel Form Request Validation,
如何自定义响应格式?
例如,它将错误消息显示为: -
{
"password": ["The password field is required."],
"password_confirmation": ["The password confirmation field is required."]
}
我想将所有错误消息放入描述属性中,例如。
{
"status" : false,
"description" : ["The password field is required.", "The password confirmation field is required."]
}
答案 0 :(得分:0)
它位于您提供的文档链接的下方:
您可以自定义表单请求使用的错误消息 覆盖消息方法。此方法应返回一个数组 属性/规则对及其相应的错误消息。
所以,把它放在你的请求中:
clearCacheResults()
答案 1 :(得分:0)
public function rules()
{
return [
'password' => [ 'required' , 'min:4','confirmed' ] ,
'password_confirmation' => [ 'required' , 'min:4' ]
];
}
答案 2 :(得分:0)
创建自定义验证消息的另一种方法是将您自己的消息数组传递给控制器操作中的validate
函数。 validate
函数将带有自定义消息的数组作为第三个参数。
public function listing(Request $request)
{
$messages = [
'search_input.alpha_dash' => 'Please enter a valid search term. Only use letters, dashes and underscores.',
];
$this->validate($request, [
'search_input' => 'alpha_dash',
], $messages);
return view('videos.index');
}
答案 3 :(得分:0)
要将所有错误消息提取到数组中,您需要执行以下操作...
$validator = Validator::make($request->all(), [
'password' => 'required',
'password_confirmation' => 'required|same:password',
]);
$messages = $validator->errors()->toArray();
/* ** This will give you something like this **
*
* 'password' => 'The password field is required.',
* 'password_confirmation' => 'The password confirmation field is required.'
*
* **/
// If you want only array values - as your example of description, then use php's array_values() method like this...
$description_arr = array_values($messages);
谢谢希望这会对你有所帮助.. !! 为了更好地理解Laravel Validations,请查看其文档 - Laravel Validation Docs
答案 4 :(得分:0)
我知道这个问题是 2016 年的,
我在 2021 年回答这个问题,因为今天我发现了同样的问题。
如果您使用的是 Laravel 8(按照今天),这就是我所做的。
创建您自己的表单请求,使用 php artisan make:request IndonesiaInsertRequest
它将构建一个新类 Custom
在新类中覆盖 failedValidation
函数,如 follow。
protected function failedValidation(Validator $validator){
$responseformat = ["myerror"=>$validator->errors()];
new HttpResponseException(response()->json($responseformat, 200));
}
将 $responseformat
更改为您想要的任何形式。