从 Laravel 的表单验证中获取纯错误消息?
Posted
技术标签:
【中文标题】从 Laravel 的表单验证中获取纯错误消息?【英文标题】:Get pure error message from form validation in Laravel? 【发布时间】:2015-04-07 08:10:27 【问题描述】:我正在使用 laravel 开发 REST 服务。我想从 laravel 表单验证中获得准确的错误消息 控制器
$validator = Validator::make(array('email' => Input::get('email')), array('email' => array('required', 'email')));
if ($validator->fails())
$this->res_err_data['error'] = $validator->messages();
return Response::json($this->res_err_data, 400);
错误信息
"status": "2",
"data": [],
"error":
"email": [
"The email field is required."
]
我只想收到电子邮件错误消息"The email field is required."
而不是["The email field is required."]
【问题讨论】:
【参考方案1】:试试这个...
Add following line after email field
$errors->first('email', '<div class="errorsetting">:message</div>')
Add following line after "$validator = Validator::make(array('email' => Input::get('email')), array('email' => array('required', 'email')));"
if ($validator->fails())
return Redirect::to('toyourpage')->withInput()->withErrors($validation->messages());
【讨论】:
我正在开发 REST web 服务,所以需要显示 JSON 而不是重定向。1【参考方案2】:你可以使用array_map()
来改变结构:
$meessages = $validator->messages();
$this->res_err_data['error'] = array_map(function($errors)
return isset($errors[0]) ? $errors[0] : null;
, $messages);
【讨论】:
【参考方案3】:像这样在你的代码中使用$validator->errors()->first()
$validator = Validator::make(array('email' => Input::get('email')), array('email' => array('required', 'email')));
if ($validator->fails())
$this->res_err_data['error'] = $validator->errors()->first();
return Response::json($this->res_err_data, 400);
【讨论】:
以上是关于从 Laravel 的表单验证中获取纯错误消息?的主要内容,如果未能解决你的问题,请参考以下文章