我可能在不需要的地方过于复杂了,但我有一个通过AJAX提交然后验证的表单。我试图返回出现的第一个错误,但我似乎只能获取验证。必需,这对我来说当然没有用;我无法告诉用户哪个字段失败,也无法翻译适当的错误消息。
什么东西?如何获取人性化的错误消息并将其作为JSON响应返回?
以下是我迄今为止所做的。。。最大的how-do-I是获取错误消息的属性名称,但也许有一种更简单的方法来管理它。。。
/**
* Adds a new post to the system
*
* @param Request $request
* @return json
*/
public function store(Request $request)
{
// run validation
if(!empty($validator = $this->validate($request)))
{
return response()->json(trans('global/'.$validator->first(), ['attribute' => 'how to get attribute?!?!']), 400);
}
// some other logic...
}
/**
* Validates a post add or post update request
*
* @access private
* @param Request $request
* @return mixed
*/
private function validate(Request $request)
{
// set-up validation rules
$validator = Validator::make($request->all(), [
'username' => 'max:255|required',
'email' => 'email',
'service' => 'numeric|required',
]);
$validator->setAttributeNames([
'username' => "Username",
'service' => "Service",
]);
// run validation
if($validator->fails())
{
return $validator->errors();
}
return true;
}
在控制器store
方法中使用上面的代码,不要覆盖validate
方法:
$rules = [
'username' => 'max:255|required',
'email' => 'email',
'service' => 'numeric|required',
];
$attributes = [
'username' => "Username",
'service' => "Service",
];
$this->validate($request, $rules, [], $attributes);
如果验证失败,它将自动返回错误json
错误示例:
{"username":["The Username field is required."],"service":["The Service field is required."]}