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

 更新时间:2020年02月18日 08:33:03   作者:怀素真  
这篇文章主要介绍了laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作,涉及laravel表单请求类的创建、使用及异常处理相关操作技巧,需要的朋友可以参考下

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

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

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

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

先创建一个表单请求类:

php artisan make:request TestRequest

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

<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Http\Exceptions\HttpResponseException;
class TestRequest extends FormRequest
{
  /**
   * 控制访问权限
   */
  public function authorize()
  {
    //注意,默认是false,改成true
    return true;
  }
  /**
   * 验证规则
   */
  public function rules()
  {
    return [
      'name' => 'required',
      'pwd' => 'required',
    ];
  }
  /**
   * 验证消息
   */
  public function messages()
  {
    return [
      'name.required' => '姓名必填',
      'pwd.required' => '密码必填',
    ];
  }
}

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

public function failedValidation(Validator $validator)
{
  throw (new HttpResponseException(response()->json([
    'status_code' => 500,
    'message' => '请求错误',
    'data' => $validator->errors()->first(),
  ], 200)));
}

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

更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

相关文章

  • php判断页面是否是微信打开的示例(微信打开网页)

    php判断页面是否是微信打开的示例(微信打开网页)

    今天遇到一问题,让一个页面在微信上打开,PC上不能直接打开,下面是我使用的方法,现在分享给大家
    2014-04-04
  • php解压文件代码实现php在线解压

    php解压文件代码实现php在线解压

    这篇文章主要介绍了php解压文件代码,根据这个代码可以实现php在线解压功能,需要的朋友可以参考下
    2014-02-02
  • PHP链接MySQL的常用扩展函数

    PHP链接MySQL的常用扩展函数

    这篇文章主要介绍了PHP链接MySQL的常用扩展函数,需要的朋友可以参考下
    2014-10-10
  • PHP生成唯一订单号的方法汇总

    PHP生成唯一订单号的方法汇总

    前阵子有个电子商务项目,需要生成订单号。当时的考虑很简单,取系统时间加上随机数,或者使用 uniqid() 方法。仔细考虑下上述方法,在顾客购买量少的情况下,订单重复的可能性为零,但是在购买高蜂期生成的订单号重复是很有可能发生的。
    2015-04-04
  • ThinkPHP5框架缓存查询操作分析

    ThinkPHP5框架缓存查询操作分析

    这篇文章主要介绍了ThinkPHP5框架缓存查询操作,结合实例形式分析了thinkPHP5缓存的设置、使用、查询等相关操作技巧,需要的朋友可以参考下
    2018-05-05
  • PHP设计模式之观察者模式实例

    PHP设计模式之观察者模式实例

    一个对象通过添加一个方法(该方法允许另一个对象,即观察者 注册自己)使本身变得可观察。当可观察的对象更改时,它会将消息发送到已注册的观察者。通过本文给大家介绍PHP设计模式之观察者模式,需要的朋友参考下
    2016-02-02
  • php文件操作实例代码

    php文件操作实例代码

    php中的文件操作比asp要简单很多,而且功能强大。学习php的朋友可以参考下
    2012-05-05
  • Codeigniter实现处理用户登录验证后的URL跳转

    Codeigniter实现处理用户登录验证后的URL跳转

    这篇文章主要介绍了Codeigniter实现处理用户登录验证后的URL跳转,需要的朋友可以参考下
    2014-06-06
  • Yii2 ActiveRecord多表关联及多表关联搜索的实现

    Yii2 ActiveRecord多表关联及多表关联搜索的实现

    这篇文章主要介绍了Yii2 ActiveRecord多表关联及多表关联搜索的实现的相关资料,需要的朋友可以参考下
    2016-06-06
  • 19个超实用的PHP代码片段

    19个超实用的PHP代码片段

    每位程序员和开发者都喜欢讨论他们最爱的代码片段,尤其是当PHP开发者花费数个小时为网页编码或创建应用时,他们更知道这些代码的重要性。为了节约编码时间,小编收集了一些较为实用的代码片段,帮助开发者提高工作效率
    2014-03-03

最新评论