如何添加自定义验证错误?

时间:2015-12-01 01:48:05

标签: laravel-4

这就是我所拥有的:

$data = Input::all();
$validator = Validator::make($data, Vehicle::$rules);

if($validator->fails()) {
    return Redirect::back()->withErrors($validator)->withInput();
}

但我的Vehicle::$rules无法涵盖我需要验证的所有内容。如何将其他错误消息添加到$validator

我试过

$validator->errors()->add("xxx","yyy")

但它似乎并没有真正添加错误。

2 个答案:

答案 0 :(得分:1)

因此,如果我理解正确,您希望在日期上运行其他检查,如果有错误,请将其添加到withErrors()方法。以下是我认为您正在寻找的内容:

$errors = [];
$data = Input::all();
$validator = Validator::make($data, Vehicle::$rules);

if($validator->fails()) {
    $errors = $validator->errors()->toArray();
}

// "manual" check
if($data['field'] < 10){
    $errors['field'] = ['My custom error.']
}

if(!empty($errors)){     
    return Redirect::back()->withErrors($errors)->withInput();
}

答案 1 :(得分:0)

如果您想更改默认验证消息,可以通过编辑此文件resources\lang\en\validation.php

来完成

如果您想检查表格中所要求的数据是否适合您的申请,您可以使用if条件。示例:如果要强制使用用户名字段(在Laravel验证中为required),则代码在控制器中应如下所示:

public function store(Request $request){
    if($request['username'] == ''){
        Session::flash('error_message','The username field is required!');
        return redirect('previousPageRoute');
    }

    Session::flash('success_message','Username collected successfully!');
    return redirect('nextPageRoute');
}

您的视图文件应该显示session消息 -

@if(Session::has('error_message'))
    {{ Session::get('error_message') }}
@if(Session::has('success_message'))
    {{ Session::get('success_message') }}
@endif