如何在 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
How to customize error messages in Laravel?
提问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 文档,它们是布局最好的文档之一。