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


Posted in PHP onFebruary 18, 2020

本文实例讲述了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框架的PHP程序设计有所帮助。

PHP 相关文章推荐
玩转图像函数库―常见图形操作
Sep 03 PHP
在线竞拍系统的PHP实现框架(二)
Oct 09 PHP
基于mysql的bbs设计(二)
Oct 09 PHP
坏狼的PHP学习教程之第1天
Jun 15 PHP
PHP5 面向对象(学习记录)
Dec 02 PHP
用php制作简单分页(从数据库读取记录)的方法详解
May 04 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
Aug 06 PHP
PHP创建PowerPoint2007文档的方法
Dec 10 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
Feb 26 PHP
php json_encode与json_decode详解及实例
Dec 13 PHP
PHP获取HTTP body内容的方法
Dec 31 PHP
PHP实现微信公众号验证Token的示例代码
Dec 16 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
Feb 16 #PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
Feb 15 #PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 #PHP
php 函数中静态变量使用的问题实例分析
Mar 05 #PHP
php多进程中的阻塞与非阻塞操作实例分析
Mar 04 #PHP
php 中的信号处理操作实例详解
Mar 04 #PHP
php libevent 功能与使用方法详解
Mar 04 #PHP
You might like
PHP生成短网址的3种方法代码实例
2014/07/08 PHP
php中删除、清空session的方式总结
2015/10/09 PHP
禁止刷新,回退的JS
2006/11/25 Javascript
ASP.NET jQuery 实例17 通过使用jQuery validation插件校验ListBox
2012/02/03 Javascript
javascript 全选与全取消功能的实现代码
2012/12/23 Javascript
Jquery焦点与失去焦点示例应用
2014/06/10 Javascript
浅谈Javascript中深复制
2014/12/01 Javascript
jQuery中parentsUntil()方法用法实例
2015/01/07 Javascript
JQuery实现样式设置、追加、移除与切换的方法
2015/06/11 Javascript
基于jQuery滑动杆实现购买日期选择效果
2015/09/15 Javascript
javascript超过容器后显示省略号效果的方法(兼容一行或者多行)
2016/07/14 Javascript
jQuery中ajax错误调试分析
2016/12/01 Javascript
原生js编写2048小游戏
2017/03/17 Javascript
三种Webpack打包方式(小结)
2018/09/19 Javascript
微信小程序 高德地图路线规划实现过程详解
2019/08/05 Javascript
细说webpack6 Babel的使用详解
2019/09/26 Javascript
Python pass详细介绍及实例代码
2016/11/24 Python
flask-restful使用总结
2018/12/04 Python
Python实现的批量修改文件后缀名操作示例
2018/12/07 Python
python assert的用处示例详解
2019/04/01 Python
Django框架自定义session处理操作示例
2019/05/27 Python
Python使用matplotlib实现交换式图形显示功能示例
2019/09/06 Python
python中通过selenium简单操作及元素定位知识点总结
2019/09/10 Python
解决tensorflow打印tensor有省略号的问题
2020/02/04 Python
Python用户自定义异常的实现
2020/12/25 Python
Matlab使用Plot函数实现数据动态显示方法总结
2021/02/25 Python
澳大利亚领先的在线机械五金、园艺和存储专家:Edisons
2018/03/24 全球购物
存储过程的优点有哪些
2012/09/27 面试题
会计实习期自我鉴定
2013/10/06 职场文书
商务会议邀请函
2014/01/09 职场文书
高三自我评价
2014/02/01 职场文书
销售会计岗位职责
2014/03/15 职场文书
怀念母亲教学反思
2014/04/28 职场文书
西安事变观后感
2015/06/12 职场文书
Java SSM配置文件案例详解
2021/08/30 Java/Android
spring注解 @PropertySource配置数据源全流程
2022/03/25 Java/Android