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 相关文章推荐
实用函数4
Nov 08 PHP
PHP伪静态写法附代码
Jun 20 PHP
简单的php写入数据库类代码分享
Jul 26 PHP
php设计模式之命令模式使用示例
Mar 02 PHP
php设置允许大文件上传示例代码
Mar 10 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
May 15 PHP
ThinkPHP项目分组配置方法分析
Mar 23 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
Mar 29 PHP
详解EventDispatcher事件分发组件
Dec 25 PHP
thinkPHP显示不出验证码的原因与解决方法分析
May 20 PHP
Yii2.0实现生成二维码功能实例
Oct 24 PHP
php fread函数使用方法总结
May 28 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
全国FM电台频率大全 - 1 北京市
2020/03/11 无线电
php基础学习之变量的使用
2011/06/09 PHP
php实现的日历程序
2015/06/18 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
2017/03/16 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
2019/05/06 PHP
javascript框架设计读书笔记之字符串的扩展和修复
2014/12/02 Javascript
前端jquery部分很精彩
2016/05/03 Javascript
javascript加载xml 并解析各节点的值(实现方法)
2016/10/12 Javascript
bootstrap模态框实现拖拽效果
2016/12/14 Javascript
详解Angular中的自定义服务Service、Provider以及Factory
2017/04/22 Javascript
详解用node.js实现简单的反向代理
2017/06/26 Javascript
JS实现弹出下载对话框及常见文件类型的下载
2017/07/13 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
SVG动画vivus.js库使用小结(实例代码)
2017/09/14 Javascript
Angular2监听页面大小变化的解决方法
2017/10/09 Javascript
vuex提交state&amp;&amp;实时监听state数据的改变方法
2018/09/16 Javascript
微信小程序实现点赞、取消点赞功能
2018/11/02 Javascript
Vue从TodoList中学父子组件通信
2019/02/05 Javascript
electron踩坑之remote of undefined的解决
2020/10/06 Javascript
JavaScript枚举选择jquery插件代码实例
2020/11/17 jQuery
Python的Flask框架中@app.route的用法教程
2015/03/31 Python
在Python的Django框架中用流响应生成CSV文件的教程
2015/05/02 Python
Python基于whois模块简单识别网站域名及所有者的方法
2018/04/23 Python
详解用python生成随机数的几种方法
2019/08/04 Python
Pytorch 神经网络—自定义数据集上实现教程
2020/01/07 Python
Python logging模块写入中文出现乱码
2020/05/21 Python
django 实现后台从富文本提取纯文本
2020/07/02 Python
Jupyter Notebook添加代码自动补全功能的实现
2021/01/07 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
使用CSS3制作饼状旋转载入效果的实例
2015/06/23 HTML / CSS
html5 外链式实现加减乘除的代码
2019/09/04 HTML / CSS
五四演讲稿范文
2014/09/03 职场文书
党员检讨书范文
2014/12/27 职场文书
2016年国庆节67周年活动总结
2016/04/01 职场文书
Go语言切片前或中间插入项与内置copy()函数详解
2021/04/27 Golang
详解ZABBIX监控ESXI主机的问题
2022/06/21 Servers