Php 如何在Laravel中自定义错误消息?
这是我的密码:Php 如何在Laravel中自定义错误消息?,php,laravel,Php,Laravel,这是我的密码: public function store(Request $request){ $this->validate($request, [ 'name' => 'required', 'email' => 'required|email', 'content' => 'required|min:10', ]); $new_array = array(); $new_array
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();
}
现在我需要为这些过滤器设置一些新的错误消息(例如:必需的
,电子邮件
,…)
目前,这是必需的默认错误消息
:
名称字段是必需的
如何更改它?来自文档:
您可以通过重写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',
];
}
这只是文件的复制粘贴。您应该参考laravel文档,它们是布局最好的文档之一 您可以这样修改验证器:
$validator = Validator::make($request, [
'name' => 'required',
'email' => 'required|email',
'content' => 'required|min:10',
]);
现在,您将能够通过以下方法捕获验证错误:
if ($validator->fails()) {
$error_message = $validator->errors()->all();
// Write Custom Validator Error Message according to the $error_message found.
}
无论如何,Laravel Validator会给出非常全面的错误消息。您可以使用以下命令创建一个Laravel请求来处理验证
php artisan make:request RequestName
您将在app\Http\Request中找到该文件
在该文件中,您将找到rules()函数,您可以在其中提到所有规则
public function rules()
{
return [
'name' => 'required',
];
}
您可以为自定义消息创建message()函数,如
public function messages()
{
return[
'name.required' => 'The name field is required.'
];
}
在控制器方法中添加此请求
public function methodName(RequestName $request)
{
//Your code
}
板条箱规则
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;
}
在这样的控制器中使用
$validator = $this->user_registration_rules($request_data);
if($validator->fails())
{
return redirect()->back()->withErrors($validator)->withInput();
}
遵循以下步骤:
视图:
模型
然后如何应用
RequestName
?当我提交表单时,我得到:ReflectionException类App\Http\Controllers\SociallinkRequest不存在。如果我在App\Http\Requests\SociallinkRequest.php的顶部添加“use-App\Http\Requests\SociallinkRequest;”,那么我将得到:HttpException此操作未经授权。我在5.4级。在你的控制器中添加使用App\Http\Requests\SociallinkRequest
,我正在使用它。通过从authorize()返回true而不是默认的false,解决了此问题。一切都已开始工作。请将错误消息指定为测试,好吗?例如,此消息应该是针对必需的
过滤器:您必须在此输入中写入内容
只需返回您需要的内容即可。如果($validator->fails()){return“您必须在此输入中写入内容”}我应该在何处写入user\u registration\u rules()
函数?在请求文件夹中?我是Laraver的新手,所以我不知道如何使用你的代码。我以前也在文档中看到过,但我仍然不知道应该如何具体实现它。你可能想通过这个关于laracasts的免费课程。将您的代码添加到您通过以下方式生成的请求类:php artisan make:request MyRequest,然后转到您的控制器,在store(request$request)方法的参数中用MyRequest替换request,或者其他什么方法,但它到底应该放在哪里?
<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>
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');
}
}
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 ',
);