如何在 Laravel 中自定义错误消息?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/40124518/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-14 14:38:12  来源:igfitidea点击:

How to customize error messages in Laravel?

phplaravel

提问by stack

Here is my code:

这是我的代码:

public function store(Request $request){

    $this->validate($request, [
        'name' => 'required',
        'email' => 'required|email',
        'content' => 'required|min:10',
    ]);

    $new_array = array();
    $new_array['name'] = $request->name;
    $new_array['email'] = $request->email;
    $new_array['content'] = $request->content;
    contact::create($new_array);

    return back();
}

Now I need to set some new error-messages for those filters (ex: required, email, ..).

现在我需要为这些过滤器设置一些新的错误消息(例如:required, email, ..)

Currently, this is the default error message for required:

目前,这是以下的默认错误消息required

The name field is required.

名称字段是必需的。

How can I change it?

我怎样才能改变它?

采纳答案by Pratik Kumar

Follow this : View :

按照这个:查看:

<div class="col-md-3">
    {{Form::label('Deposit Amount')}}
    {{Form::text('deposit_amount',Input::old('deposit_amount'),array('class'=>"form-control"))}}
    <span class="error">{!!$errors->first('deposit_amount')!!}</span>
    </div>

Controller

控制器

 use App\Http\Requests;
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Input;
    use DB;
    use Hash;
    use Auth;
    use App\PaymentModel;
    use Redirect;
    use Response;

class TransactionController extends Controller
{
  public function payment(Request $request){

   $validator = Validator::make(Input::all(),  PaymentModel::Rules(), PaymentModel::$message);
   if ($validator->fails())
   {
      return \Redirect::back()->withErrors($validator)->withInput();
  }
  else
  {

    $deposit_amount=Input::get("deposit_amount");

    $obj = new PaymentModel();

    $obj->deposit_amount=$deposit_amount;

    if ($obj->save()) {

        Session::flash('success', 'Saved Successfully !!');

    } else {
      Session::flash('error', 'Some thing went wrong!!');
    }

    }

    return Redirect::action('TransactionController@payment');
  }
  }

Model

模型

   public static function Rules(){
         $rules= array(
        'deposit_amount'=>'required|numeric',       
        ); 
       return $rules;
    }

     public static  $messages=array(
         'deposit_amount.required'=>'Please Enter Amount ',
        'deposit_amount.numeric'=>'Deposit Amount Must be a number ', 
        );

回答by Komal

Crate rules

箱子规则

public function user_registration_rules(array $data)
{
  $messages = [
    'full-name.required' => 'Please enter full name',     
    'address.required' => 'Please enter address'
  ];

  $validator = Validator::make($data, [
    'full-name' => 'required|min:5|max:70', 
    'address' => 'required'     
  ], $messages);

  return $validator;
}

Use in controller like this

像这样在控制器中使用

$validator = $this->user_registration_rules($request_data);   
if($validator->fails())
{
  return redirect()->back()->withErrors($validator)->withInput();
}

回答by Akshay Deshmukh

You can create a Laravel Request for handling the validations using following command

您可以使用以下命令创建用于处理验证的 Laravel 请求

php artisan make:request RequestName

You will find the file in app\Http\Request

您将在 app\Http\Request 中找到该文件

Inside the file you will find the rules() function where you can mentioned all rules

在文件中,您将找到 rules() 函数,您可以在其中提及所有规则

 public function rules()
    {
        return [
            'name' => 'required',
        ];
    }

You can create message() function for custom message like

您可以为自定义消息创建 message() 函数,例如

 public function messages()
    {
        return[
            'name.required' => 'The name field is required.'
        ];
    }

Add this request in controller method

在控制器方法中添加此请求

public function methodName(RequestName $request)
    {
       //Your code
    }

回答by Ani

You can modify the validator like this:

您可以像这样修改验证器:

$validator = Validator::make($request, [
            'name' => 'required',
            'email' => 'required|email',
            'content' => 'required|min:10',
        ]);

Now you will be able to catch the validation errors with this :

现在您将能够通过以下方式捕获验证错误:

if ($validator->fails()) {
    $error_message = $validator->errors()->all();
    // Write Custom Validator Error Message according to the $error_message found.
}

Laravel Validator gives pretty comprehensive error messages anyway.

无论如何,Laravel Validator 提供了非常全面的错误信息。

回答by Vivek V Dwivedi

From the docs: https://laravel.com/docs/5.3/validation#customizing-the-error-messages

来自文档:https: //laravel.com/docs/5.3/validation#customizing-the-error-messages

You may customize the error messages used by the form request by overriding the messages method. This method should return an array of attribute / rule pairs and their corresponding error messages:

您可以通过覆盖 messages 方法自定义表单请求使用的错误消息。此方法应返回一组属性/规则对及其相应的错误消息:

/**
 * Get the error messages for the defined validation rules.
 *
 * @return array
 */
public function messages() 
{
    return [
    'title.required' => 'A title is required',
    'body.required'  => 'A message is required',
];
}

And this is just a copy paste from the docs. You should refer to laravel docs, they are one of the best laid out docs.

这只是文档中的复制粘贴。您应该参考 laravel 文档,它们是布局最好的文档之一。