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和ACCESS写聊天室(一)
Oct 09 PHP
简单的过滤字符串中的HTML标记
Dec 25 PHP
linux下 C语言对 php 扩展
Dec 14 PHP
PHP 数据库树的遍历方法
Feb 06 PHP
PHP 引用文件技巧
Mar 02 PHP
PHP ? EasyUI DataGrid 资料取的方式介绍
Nov 07 PHP
PHP小教程之实现链表
Jun 09 PHP
PHP生成树的方法
Jul 28 PHP
php实现仿写CodeIgniter的购物车类
Jul 29 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
Jan 22 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
May 31 PHP
PHP请求Socket接口测试实例
Aug 12 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通过插入mysql数据来实现多机互锁实例
2014/11/05 PHP
PHP弹出对话框技巧详细解读
2015/09/26 PHP
如何使用jQuery来处理图片坏链具体实现步骤
2013/05/02 Javascript
用javascript关闭本窗口不弹出询问框的方法
2014/09/12 Javascript
js改变Iframe中Src的方法
2015/05/05 Javascript
jquery实现表格隔行换色效果
2015/11/19 Javascript
JavaScript实现下拉菜单的显示和隐藏
2016/01/05 Javascript
jquery中键盘事件小结
2016/02/24 Javascript
jQuery.uploadify文件上传组件实例讲解
2016/09/23 Javascript
javascript中的后退和刷新实现方法
2016/11/10 Javascript
Node.js编写CLI的实例详解
2017/05/17 Javascript
Angularjs中的$apply及优化使用详解
2018/07/02 Javascript
vue相关配置文件详解及多环境配置详细步骤
2020/05/19 Javascript
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
2020/11/20 Vue.js
Vue中inheritAttrs的使用实例详解
2020/12/31 Vue.js
Python中模块string.py详解
2017/03/12 Python
python检索特定内容的文本文件实例
2018/06/05 Python
解决Python下json.loads()中文字符出错的问题
2018/12/19 Python
Python 3.8中实现functools.cached_property功能
2019/05/29 Python
python 实现屏幕录制示例
2019/12/23 Python
解决pycharm下pyuic工具使用的问题
2020/04/08 Python
解决pycharm中的run和debug失效无法点击运行
2020/06/09 Python
CSS3制作日历实现代码
2012/01/21 HTML / CSS
css3 media 响应式布局的简单实例
2016/08/03 HTML / CSS
详解如何用HTML5 Canvas API控制图片的缩放变换
2016/03/22 HTML / CSS
行政部总经理岗位职责
2014/01/04 职场文书
医学检验专业自荐信
2014/09/18 职场文书
2014年个人债务授权委托书范本
2014/09/22 职场文书
服务整改报告
2014/11/06 职场文书
社区六一儿童节活动总结
2015/02/11 职场文书
证券公司客户经理岗位职责
2015/04/09 职场文书
导游词之广西漓江
2019/11/02 职场文书
python 破解加密zip文件的密码
2021/04/22 Python
Maven学习----Maven安装与环境变量配置教程
2021/06/29 Java/Android
python not运算符的实例用法
2021/06/30 Python