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 相关文章推荐
通过文字传递创建的图形按钮
Oct 09 PHP
关于BIG5-HKSCS的解决方法
Mar 20 PHP
php 数组的创建、调用和更新实现代码
Mar 09 PHP
PHP 函数学习简单小结
Jul 08 PHP
QQ登录 PHP OAuth示例代码
Jul 20 PHP
php后退一页表单内容保存实现方法
Jun 17 PHP
php求一个网段开始与结束IP地址的方法
Jul 09 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
Dec 22 PHP
php微信公众号开发之翻页查询
Oct 20 PHP
laravel 解决Validator使用中出现的问题
Oct 25 PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
Aug 17 PHP
Laravel相关的一些故障解决
Aug 19 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
完美解决dedecms中的[html][/html]和[code][/code]问题
2007/03/20 PHP
php合并数组array_merge函数运算符加号与的区别
2008/10/31 PHP
PHP使用内置dir类实现目录遍历删除
2015/03/31 PHP
PHP 文件上传后端处理实用技巧方法
2017/01/06 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
用jquery实现的模拟QQ邮箱里的收件人选取及其他效果(一)
2011/01/06 Javascript
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
Bootstrap基本样式学习笔记之表单(3)
2016/12/07 Javascript
vue小图标favicon不显示的解决方案
2017/09/19 Javascript
webpack热模块替换(HMR)/热更新的方法
2018/04/05 Javascript
微信小程序实践之动态控制组件的显示/隐藏功能
2018/07/18 Javascript
PM2自动部署代码步骤流程总结
2018/12/10 Javascript
react实现antd线上主题动态切换功能
2019/08/12 Javascript
javascript自定义加载loading效果
2020/09/15 Javascript
[00:32]2018DOTA2亚洲邀请赛EG出场
2018/04/03 DOTA
基于Python如何使用AIML搭建聊天机器人
2016/01/27 Python
Python while 循环使用的简单实例
2016/06/08 Python
python面试题之列表声明实例分析
2019/07/08 Python
扩展Django admin的list_filter()可使用范围方法
2019/08/21 Python
解决Keras TensorFlow 混编中 trainable=False设置无效问题
2020/06/28 Python
利用python批量爬取百度任意类别的图片的实现方法
2020/10/07 Python
python实现录制全屏和选择区域录屏功能
2021/02/05 Python
css3动画效果抖动解决方法
2018/09/03 HTML / CSS
纯css3制作网站后台管理面板
2014/12/30 HTML / CSS
Html5移动端div固定到底部实现底部导航条的几种方式
2021/03/09 HTML / CSS
全球地下的服装和态度:Slam Jam
2018/02/04 全球购物
世界各地的旅游、观光和活动:Isango!
2019/10/29 全球购物
adidas瑞典官方网站:购买阿迪达斯鞋子和运动服
2019/12/11 全球购物
银行贷款承诺书
2014/03/29 职场文书
涉密人员保密承诺书
2014/05/28 职场文书
抗洪救灾感谢信
2015/01/22 职场文书
2016元旦主持人开场白
2015/12/03 职场文书
Python实战之OpenCV实现猫脸检测
2021/06/26 Python
安装Ruby和 Rails的详细步骤
2022/04/19 Ruby
Python matplotlib 利用随机函数生成变化图形
2022/04/26 Python
向Spring IOC 容器动态注册bean实现方式
2022/07/15 Java/Android