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中全面阻止SQL注入式攻击分析小结
Jan 30 PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
Aug 01 PHP
谈谈关于php的优点与缺点
Apr 11 PHP
使用Sphinx对索引进行搜索
Jun 25 PHP
JS异常处理try..catch语句的作用和实例
May 05 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
Jun 26 PHP
PHP SESSION的增加、删除、修改、查看操作
Mar 20 PHP
开启PHP Static 关键字之旅模式
Nov 13 PHP
PHP获取当前执行php文件名的代码
Mar 02 PHP
PHP使用PDO调用mssql存储过程的方法示例
Oct 07 PHP
浅谈laravel框架与thinkPHP框架的区别
Oct 23 PHP
Laravel 模型使用软删除-左连接查询-表起别名示例
Oct 24 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调用mysql数据 dbclass类
2011/05/07 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
2013/06/03 PHP
PHP5常用函数列表(分享)
2013/06/07 PHP
PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
2014/04/21 PHP
php生成图片验证码-附五种验证码
2015/08/19 PHP
zen cart实现订单中增加paypal中预留电话的方法
2016/07/12 PHP
YII2框架中actions的作用与使用方法示例
2020/03/13 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
js中的push和join方法使用介绍
2013/10/08 Javascript
使用JQuery库提供的扩展功能实现自定义方法
2014/09/09 Javascript
修复bash漏洞的shell脚本分享
2014/12/31 Javascript
javascript模拟C#格式化字符串
2015/08/26 Javascript
以JavaScript来实现WordPress中的二级导航菜单的方法
2015/12/14 Javascript
很棒的Bootstrap选项卡切换效果
2016/07/01 Javascript
使用Bootstrap + Vue.js实现添加删除数据示例
2017/02/27 Javascript
Centos6.8下Node.js安装教程
2017/05/12 Javascript
jQuery实现点击关注和取消功能
2017/07/03 jQuery
JQuery判断正整数整理小结
2017/08/21 jQuery
JavaScript 高性能数组去重的方法
2018/09/20 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
vue addRoutes路由动态加载操作
2020/08/04 Javascript
在vue中实现清除echarts上次保留的数据(亲测有效)
2020/09/09 Javascript
Python的设计模式编程入门指南
2015/04/02 Python
python创建列表并给列表赋初始值的方法
2015/07/28 Python
在VS2017中用C#调用python脚本的实现
2019/07/31 Python
关于Python形参打包与解包小技巧分享
2019/08/24 Python
python使用sklearn实现决策树的方法示例
2019/09/12 Python
如何验证python安装成功
2020/07/06 Python
致共产党员倡议书
2014/04/16 职场文书
公司任命书范本
2014/06/04 职场文书
暑期学习心得体会
2014/09/02 职场文书
淘宝好评语句大全
2014/12/31 职场文书
100句拼搏进取的名言警句,值得一读!
2019/10/07 职场文书
python实现股票历史数据可视化分析案例
2021/06/10 Python
Python利用FlashText算法实现替换字符串
2022/03/31 Python
PostgreSQL 插入INSERT、删除DELETE、更新UPDATE、事务transaction
2022/04/12 PostgreSQL