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 相关文章推荐
PHP文本数据库的搜索方法
Oct 09 PHP
简化php模板页面中分页代码的解析
Feb 06 PHP
php+jquery编码方面的一些心得(utf-8 gb2312)
Oct 12 PHP
PHP验证码类代码( 最新修改,完全定制化! )
Dec 02 PHP
php中3种方法统计字符串中每种字符的个数并排序
Aug 27 PHP
PHP学习笔记之字符串编码的转换和判断
May 22 PHP
ThinkPHP实现递归无级分类――代码少
Jul 29 PHP
PHP缩略图生成和图片水印制作
Jan 07 PHP
php文件管理基本功能简单操作
Jan 16 PHP
PHP将字符串首字母大小写转换的实例
Jan 21 PHP
thinkPHP和onethink微信支付插件分享
Aug 11 PHP
用Laravel轻松处理千万级数据的方法实现
Dec 25 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
Feb 16 #PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
Feb 15 #PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 #PHP
laravel框架使用极光推送消息操作示例
Feb 15 #PHP
laravel框架使用阿里云短信发送消息操作示例
Feb 15 #PHP
laravel框架实现敏感词汇过滤功能示例
Feb 15 #PHP
PHP 枚举类型的管理与设计知识点总结
Feb 13 #PHP
You might like
PHP中一个控制字符串输出的函数
2006/10/09 PHP
PHP 文件上传进度条的两种实现方法的代码
2007/11/25 PHP
PHP检测用户是否关闭浏览器的方法
2016/02/14 PHP
PHP创建单例后台进程的方法示例
2017/05/23 PHP
THINKPHP3.2使用soap连接webservice的解决方法
2017/12/13 PHP
JS短路原理的应用示例 精简代码的途径
2013/12/13 Javascript
javascript轮播图算法
2016/10/21 Javascript
node.js 核心http模块,起一个服务器,返回一个页面的实例
2017/09/11 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
2018/01/11 Javascript
关于express与koa的使用对比详解
2018/01/25 Javascript
angular4笔记系列之内置指令小结
2018/11/09 Javascript
JS根据json数组多个字段排序及json数组常用操作
2019/06/06 Javascript
Vue 监听元素前后变化值实例
2020/07/29 Javascript
Vue如何循环提取对象数组中的值
2020/11/18 Vue.js
详解Python pygame安装过程笔记
2017/06/05 Python
python 实现矩阵上下/左右翻转,转置的示例
2019/01/23 Python
Python3监控疫情的完整代码
2020/02/20 Python
Tensorflow中批量读取数据的案列分析及TFRecord文件的打包与读取
2020/06/30 Python
Python中Selenium库使用教程详解
2020/07/23 Python
python判断一个变量是否已经设置的方法
2020/08/13 Python
Pycharm编辑器功能之代码折叠效果的实现代码
2020/10/15 Python
HTML5+CSS3 诱人的实例:3D立方体旋转动画实例
2016/12/30 HTML / CSS
详解FireFox下Canvas使用图像合成绘制SVG的Bug
2019/07/10 HTML / CSS
TripAdvisor印尼站:全球领先的旅游网站
2018/03/15 全球购物
加拿大时尚潮流大码女装购物网站:Addition Elle
2018/04/02 全球购物
乡镇消防工作实施方案
2014/03/27 职场文书
办公室打字员岗位职责
2014/04/16 职场文书
林肯就职演讲稿
2014/05/19 职场文书
简易离婚协议书(范本)
2014/10/25 职场文书
2016公司年会主持词
2015/07/01 职场文书
网吧温馨提示
2015/07/17 职场文书
新学期主题班会
2015/08/17 职场文书
扩展多台相同的Web服务器
2021/04/01 Servers
详解nginx进程锁的实现
2021/06/14 Servers
「租借女友」第2季樱泽墨角色PV&新视觉图公开
2022/03/21 日漫
MySQL 逻辑备份 into outfile
2022/05/15 MySQL