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 curl 并发最佳实践代码分享
Sep 05 PHP
使用swoole扩展php websocket示例
Feb 13 PHP
php获取mysql字段名称和其它信息的例子
Apr 14 PHP
PHP获取文件夹内文件数的方法
Mar 12 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
Jul 14 PHP
Zend Framework分发器用法示例
Dec 11 PHP
使用php自动备份数据库表的实现方法
Jul 28 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
Jan 16 PHP
解决php extension 加载顺序问题
Aug 16 PHP
Laravel 读取 config 下的数据方法
Oct 13 PHP
PHP实现爬虫爬取图片代码实例
Mar 03 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
dedecms防止FCK乱格式化你的代码的修改方法
2007/03/17 PHP
php Ajax乱码
2008/04/09 PHP
php使用GD创建保持宽高比缩略图的方法
2015/04/17 PHP
基于PHP技术开发客服工单系统
2016/01/06 PHP
PHP与Ajax相结合实现登录验证小Demo
2016/03/16 PHP
thinkPHP3.1验证码的简单实现方法
2016/04/22 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
2016/06/20 PHP
浅析php如何实现爬取数据原理
2018/09/27 PHP
PHP使用redis位图bitMap 实现签到功能
2019/10/08 PHP
ajax异步刷新实现更新数据库
2012/12/03 Javascript
YUI Compressor压缩JavaScript原理及微优化
2013/01/07 Javascript
js hover 定时器(实例代码)
2013/11/12 Javascript
JS数组的遍历方式for循环与for...in
2014/07/31 Javascript
js防止页面被iframe调用的方法
2014/10/30 Javascript
浅谈重写window对象的方法
2014/12/29 Javascript
JavaScript自定义数组排序方法
2015/02/12 Javascript
第一章之初识Bootstrap
2016/04/25 Javascript
js中用cssText设置css样式的简单方法
2016/09/19 Javascript
Vue渲染过程浅析
2019/03/14 Javascript
DatePickerDialog 自定义样式及使用全解
2019/07/09 Javascript
原生javascript自定义input[type=radio]效果示例
2019/08/27 Javascript
node实现mock-plugin中间件的方法
2019/12/25 Javascript
Python正则表达式教程之二:捕获篇
2017/03/02 Python
python print出共轭复数的方法详解
2019/06/25 Python
5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
2016/08/15 HTML / CSS
基于 HTML5 WebGL 实现的医疗物流系统
2019/10/08 HTML / CSS
环境工程大学生自荐信
2013/10/21 职场文书
政法大学毕业生自荐信范文
2014/01/01 职场文书
微笑面对生活演讲稿
2014/05/13 职场文书
毕业生找工作自荐书
2014/06/30 职场文书
2014年大学生预备党员思想汇报1000字
2014/09/13 职场文书
群众路线剖析材料(四风问题)
2014/10/08 职场文书
工程部经理岗位职责
2015/02/02 职场文书
上级领导检查欢迎词
2015/09/30 职场文书
使用 JavaScript 制作页面效果
2021/04/21 Javascript
浅谈Python数学建模之数据导入
2021/06/23 Python