从 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-&gt;errors()-&gt;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 的表单验证中获取纯错误消息?的主要内容,如果未能解决你的问题,请参考以下文章

DropzoneJS & Laravel - 输出表单验证错误

Laravel 记录表单请求验证实际错误消息的最简单方法

如何根据输入请求规则在 laravel 刀片中显示错误消息

jquery 验证:从表单中删除错误消息

为啥 Laravel 中的验证不能正常工作?

Laravel 4 从数据库中获取下拉表单的信息