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将向Java靠拢
Oct 09 PHP
PHP中在数据库中保存Checkbox数据(2)
Oct 09 PHP
PHP 存取 MySQL 数据库的一个例子
Oct 09 PHP
php根据isbn书号查询amazon网站上的图书信息的示例
Feb 13 PHP
php获取文件大小的方法
Feb 26 PHP
CI框架学习笔记(一) - 环境安装、基本术语和框架流程
Oct 26 PHP
ThinkPHP 3.2 版本升级了哪些内容
Mar 05 PHP
php检查是否是ajax请求的方法
Apr 16 PHP
学习php设计模式 php实现命令模式(command)
Dec 08 PHP
PHP array_reduce()函数的应用解析
Oct 28 PHP
PHP面向对象程序设计之接口的继承定义与用法详解
Dec 20 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
May 06 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中url传递中文字符,特殊危险字符的解决方法
2013/08/17 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
2016/01/08 PHP
php实现的网页版剪刀石头布游戏示例
2016/11/25 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
2019/06/25 PHP
xml和web特殊字符
2009/04/28 Javascript
ExtJS GTGrid 简单用户管理
2009/07/01 Javascript
百度Popup.js弹出框进化版 拖拽小框架发布 兼容IE6/7/8,Firefox,Chrome
2010/04/13 Javascript
JQ获取动态加载的图片大小的正确方法分享
2013/11/08 Javascript
css结合js制作下拉菜单示例代码
2014/02/27 Javascript
node.js中的console.dir方法使用说明
2014/12/10 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
2016/06/20 Javascript
JS获取随机数和时间转换的简单实例
2016/07/10 Javascript
jquery 删除节点 添加节点 找兄弟节点的简单实现
2016/12/07 Javascript
JS实现密码框的显示密码和隐藏密码功能示例
2016/12/26 Javascript
jQuery实现简单漂亮的Nav导航菜单效果
2017/03/29 jQuery
React-Native之定时器Timer的实现代码
2017/10/04 Javascript
JS伪继承prototype实现方法示例
2018/06/20 Javascript
[48:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 VG vs KG
2018/03/31 DOTA
Python的Flask框架应用程序实现使用QQ账号登录的方法
2016/06/07 Python
Python日期的加减等操作的示例
2017/08/15 Python
获取python文件扩展名和文件名方法
2018/02/02 Python
pandas series序列转化为星期几的实例
2018/04/11 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
2019/08/26 Python
django xadmin中form_layout添加字段显示方式
2020/03/30 Python
Django返回HTML文件的实现方法
2020/09/17 Python
浅谈css3中的前缀
2016/07/20 HTML / CSS
详解WebSocket跨域问题解决
2018/08/06 HTML / CSS
任意存:BOXFUL
2018/05/21 全球购物
意大利时尚精品店:Nugnes 1920
2020/02/10 全球购物
第一范式(1NF)、第二范式(2NF)和第三范式(3NF)之间的区别是什么?
2016/04/28 面试题
农民致富事迹材料
2014/01/23 职场文书
关于逃课的检讨书
2014/01/23 职场文书
父母教会我观后感
2015/06/17 职场文书
2016年清明节网上祭英烈活动总结
2016/04/01 职场文书
创业计划书之家政服务
2019/09/18 职场文书
关于python pygame游戏进行声音添加的技巧
2021/10/24 Python