当前位置:首页 > CMS教程 > 其它CMS > 列表

laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例

发布:smiling 来源: PHP粉丝网  添加日期:2022-02-12 10:50:44 浏览: 评论:0 

本文实例讲述了laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作.分享给大家供大家参考,具体如下:

通常在项目中,我们会对大量的前端提交过来的表单进行验证,如果不通过,则返回错误信息。

前端为了更好的体验,都使用ajax进行表单提交,虽然 validate() 方法能够根据前端的不同请求方式,返回不同的结果。

但是返回的json格式并不是我们想要的,这个时候,我们就需要自定义返回错误结果。

先创建一个表单请求类:

php artisan make:request TestRequest

然后在 rules() 和 messages() 方法里填写自已的验证规则和消息

  1. <?php 
  2. namespace App\Http\Requests; 
  3. use Illuminate\Foundation\Http\FormRequest; 
  4. use Illuminate\Contracts\Validation\Validator; 
  5. use Illuminate\Http\Exceptions\HttpResponseException; 
  6. class TestRequest extends FormRequest 
  7.   /** 
  8.    * 控制访问权限 
  9.    */ 
  10.   public function authorize() 
  11.   { 
  12.     //注意,默认是false,改成true 
  13.     return true; 
  14.   } 
  15.   /** 
  16.    * 验证规则 
  17.    */ 
  18.   public function rules() 
  19.   { 
  20.     return [ 
  21.       'name' => 'required'
  22.       'pwd' => 'required'
  23.     ]; 
  24.   } 
  25.   /** 
  26.    * 验证消息 
  27.    */ 
  28.   public function messages() 
  29.   { 
  30.     return [ 
  31.       'name.required' => '姓名必填'
  32.       'pwd.required' => '密码必填'
  33.     ]; 
  34.   } 

注意,父类 FormRequest中的 failedValidation() 方法用来处理验证失败,我们重写父类方法,来实现自已的返回。

  1. public function failedValidation(Validator $validator
  2.   throw (new HttpResponseException(response()->json([ 
  3.     'status_code' => 500, 
  4.     'message' => '请求错误'
  5.     'data' => $validator->errors()->first(), 
  6.   ], 200))); 

注意 failedValidation() 方法的 $validator 参数是 Illuminate\Contracts\Validation\Validator 对象,不是 Illuminate\Validation\Validator,不要搞错了。

Tags: FormRequest laravel表单验证

分享到: