在thinkphp5.1 自定义验证规则 获取get 传递的值的时候 传递了 值 能够获取到 验证出错

控制器:

    public function teamDetail(){if(request()->isGet()){$team_id = $this->request->get('team_id', '');$this->validate->scene('teamDetail')->check($team_id);if ($this->validate->getError()) {return resultArray(lang(strval($this->validate->getError())));}$page = $this->request->param('page', '1');$limit = $this->request->param('limit', '10');return $this->logic->teamDetail($team_id,$page,$limit);}return '';}

验证规则:

<?phpnamespace app\daogou\validate;use think\Validate;class OrderValidate extends BaseValidate
{/*** 定义验证规则* 格式:'字段名'	=>	['规则1','规则2'...]** @var array*/	protected $rule = ['goodsName' => 'require|max:255', // 商品名称,必需且最大长度为255个字符'goodsImage' => 'require|url', // 商品图片,必需且为有效的URL'tags' => 'max:255', // 标签,最大长度为255个字符'price' => 'require|float|gt:0', // 价格,必需且为浮点数'contact' => 'require|mobile', //  买家联系方式,必需且为手机号码'property' => 'require|json', // ,必需且为json'dgId' => 'require|integer' , //商品id'addressId' =>'require|string', //用户的地址'orderId' => 'require|integer', //订单id'orderType' => 'require|string' , //订单类型 奖购 团购  闪购'maxBuyer' => 'require|integer|gt:0',   //团购最大参团人数'winner'   => 'require|integer|gt:0' ,   //团购中将人数'introduction' => 'require' ,  //商品简介'phone' => 'require|mobile',  //卖家电话'consignee' => 'require', //收货人'user_tel' => 'require|mobile', //收货人电话'status' => 'require|integer' ,// 上下架状态'fpeId' => 'require|integer', // 域id'goodId' => 'require|string' , //卖出-团购-收货信息'publish_area' =>'require',  //发布域'team_id' => 'require'      //主订单id];/*** 定义错误信息* 格式:'字段名.规则名'	=>	'错误信息'** @var array*/	protected $message = ['goodsName.max' => '商品名称最大长度不能超过255个字符!','goodsName.require' => '商品名称不能为空!', // 商品名称,必需且最大长度为255个字符'goodsImage.require' => '商品图片不能为空!', // 商品图片,必需且为有效的URL'goodsImage.url' => '请上传图片',  //'tags.max' => ' 标签最大长度为255个字符!', // 标签,最大长度为255个字符'price.require' => '请输入有效的价格!', // 价格,必需且为浮点数'price.float' => '请输入有效的价格!', // 价格,必需且为浮点数'price.gt' => '请输入有效的价格!', // 价格,必需且为浮点数'contact.require' => '手机号码格式不正确!', // 联系方式,必需且为手机号码'contact.mobile' => '手机号码格式不正确!', // 联系方式,必需且为手机号码'property.require' => '请设置奖励参数', // 属性,必需且为布尔值(true或false)'property.json' => '请设置奖励参数为josn格式', // 属性,必需且为布尔值(true或false)'dgId.require' => "商品id不能为空",'dgId.integer' => '商品Id必须为int类型','addressId.require' => '收货地址不能为空','addressId.string' => '收货地址错误','orderId.require'  => '订单id不能为空','orderId.integer' => '订单id不符合要求','orderType.require' => '订单类型不能为空','orderType.string' => '订单类型错误','maxBuyer.require' => '团购人数不能为空','maxBuyer.integer' => '团购人数必须为整数','maxBuyer.gt' => '团购人数必须为大于0','winner.require' =>'获奖人数不能为空','winner.integer' =>'获奖人数必须为整数','winner.gt' =>'获奖人数必须大于0','introduction.require' => '商品简介不能为空','phone.require' => '卖家电话电话不能为空','phone.mobile' => '卖家电话格式不正确','consignee.require' => '收货人不能为空','user_tel.require' => '收货人电话不能为空','user_tel.mobile' => '收货人电话格式不正确','status.require' => '商品的上下架状态不能为空','status.integer' => '商品上下架状态不符合要求','goodId.require' => '商品id不能为空','goodId.string' => '商品id不正确','publish_area.require' => '发布区域不能为空','team_id.require' => '主订单Id不能为空'];protected $scene = ['order' => ['goodsName','price','goodsImage','tags','contact','property','publish_area'],//奖购'userOrder' => ['dgId','addressId','property'],'finishedOrder' => ['orderId'],'grounding' => ['dgId'],'goodsList' => ['goodsName'],'release' => ['goodsName','goodsImage','orderType','price','tags','contact','introduction','phone'],//发布'qiangShopping' => ['goodsName','price','goodsImage','tags','contact','publish_area'],    //闪购'teamShopping' => ['goodsName','goodsImage','tags','price','contact','maxBuyer','winner','publish_area'],  //团购'placeOrder' =>['dgId','addressId','consignee','user_tel'], //下单'goodSwitch' => ['dgId','status'], //上下架'modifyRewardGood' => ['dgId','goodsName','goodsImage','status','price','introduction','phone','tags','property'], //编辑奖购'modifyTeamGood' =>['dgId','goodsName','goodsImage','status','price','introduction','phone','tags','maxBuyer','winner'],//编辑团购'modifyQiangGood' => ['dgId','goodsName','goodsImage','status','price','introduction','phone','tags'],//编辑闪购'goodsDetail' => ['dgId'] , //订单详情'teamList' => ['dgId'], //卖出-团购-团购详情'teamOrderDetail' => ['goodId'] , // 卖出-团购-收货信息'teamDetail' => ['team_id']];}

封装的BaseValidate  :

<?phpnamespace app\daogou\validate;use think\Validate;class BaseValidate extends Validate
{// 自定义的验证 内置规则没有jsonprotected function json($value,$rule,$param){$isJson = json_decode($value,true);if($isJson){return true;}else{return false;}}protected function string($v,$r,$p){if(!is_string($v)){return false;}else{return true;}}}

validate:

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------namespace think;use think\exception\ClassNotFoundException;
use think\validate\ValidateRule;class Validate
{/*** 自定义验证类型* @var array*/protected static $type = [];/*** 验证类型别名* @var array*/protected $alias = ['>' => 'gt', '>=' => 'egt', '<' => 'lt', '<=' => 'elt', '=' => 'eq', 'same' => 'eq',];/*** 当前验证规则* @var array*/protected $rule = [];/**  /*** 数据自动验证* @access public* @param  array     $data  数据* @param  mixed     $rules  验证规则* @param  string    $scene 验证场景* @return bool*/public function check($data, $rules = [], $scene = ''){$this->error = [];if (empty($rules)) {// 读取验证规则$rules = $this->rule;}// 获取场景定义$this->getScene($scene);foreach ($this->append as $key => $rule) {if (!isset($rules[$key])) {$rules[$key] = $rule;unset($this->append[$key]);}}foreach ($rules as $key => $rule) {// field => 'rule1|rule2...' field => ['rule1','rule2',...]if (strpos($key, '|')) {// 字段|描述 用于指定属性名称list($key, $title) = explode('|', $key);} else {$title = isset($this->field[$key]) ? $this->field[$key] : $key;}// 场景检测if (!empty($this->only) && !in_array($key, $this->only)) {continue;}// 获取数据 支持多维数组$value = $this->getDataValue($data, $key);// 字段验证if ($rule instanceof \Closure) {$result = call_user_func_array($rule, [$value, $data, $title, $this]);} elseif ($rule instanceof ValidateRule) {//  验证因子$result = $this->checkItem($key, $value, $rule->getRule(), $data, $rule->getTitle() ?: $title, $rule->getMsg());} else {$result = $this->checkItem($key, $value, $rule, $data, $title);}if (true !== $result) {// 没有返回true 则表示验证失败if (!empty($this->batch)) {// 批量验证if (is_array($result)) {$this->error = array_merge($this->error, $result);} else {$this->error[$key] = $result;}} else {$this->error = $result;return false;}}}return !empty($this->error) ? false : true;}

测试:

打印获取的参数:

 public function teamDetail(){if(request()->isGet()){$team_id = $this->request->get('team_id', '');dump($team_id);die();$this->validate->scene('teamDetail')->check($team_id);if ($this->validate->getError()) {return resultArray(lang(strval($this->validate->getError())));}$page = $this->request->param('page', '1');$limit = $this->request->param('limit', '10');return $this->logic->teamDetail($team_id,$page,$limit);}return '';}

 

结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/279241.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么实现AI数字人7x24小时不间断直播?

随着ai技术的发展 &#xff0c;数字人逐渐占据直播行业&#xff0c;而随着AI数字人直播的兴起,企业又纷纷开始通过部署数字人直播SAAS系统的方式搭建属于自己的数字人直播平台来实现7x24小时不间断直播&#xff0c;增加企业的曝光&#xff0c;以此来打开市场的知名度&#xff0…

软实力篇---第三篇

系列文章目录 文章目录 系列文章目录前言一、专业技能怎么写二、排版注意事项三、其他一些小tips前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 一、专业技能怎么…

C#教程(三):字符串的各种用法

在C#中&#xff0c;字符串&#xff08;string 类型&#xff09;是一种常用的数据类型&#xff0c;用于存储和操作文本数据。以下是一些C#中字符串的常见用法 1、输出任意的字符串长度 代码 #region 输出任意的字符串长度 Console.WriteLine("请输入你心中想到的名字&…

02-MQ入门之RabbitMQ简单概念说明

二&#xff1a;RabbitMQ 介绍 1.RabbitMQ的概念 RabbitMQ 是一个消息中间件&#xff1a;它接受并转发消息。你可以把它当做一个快递站点&#xff0c;当你要发送一个包裹时&#xff0c;你把你的包裹放到快递站&#xff0c;快递员最终会把你的快递送到收件人那里&#xff0c;按…

10进制和16进制数据互相翻译(windos版本)

window按winR键出现运行窗口&#xff0c;输入clac回车&#xff0c;进入计算器。 点击左上角&#xff0c;点击程序员&#xff0c;计算器就会变成可以进行进制转化的模式 鼠标点击DEC代表输入10进制&#xff0c;当我输入10时HEX变成A,A就是10转化16进制的数据&#xff0c; 反之如…

labelme标注json文件检查标注标签(修改imageWidth,imagePath,imageHeight)

# !/usr/bin/env python # -*- encoding: utf-8 -*- #---wzhimport os import json# 这里写你自己的存放照片和json文件的路径 json_dir =rC:\Users\Lenovo\Desktop\json3 json_files = os.listdir(json_dir

自动驾驶学习笔记(十八)——Lidar感知

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo 社区开发者圆桌会》免费报名—>传送门 文章目录 前言 Lidar感知 运动补偿 点云分割 总结…

造型精致的冰精灵充电头,充电效率高安全可靠,居家出行皆可用

随着大家对手机的依赖度越来越高&#xff0c;快速充电已经成为必不可少的需求。快充当然少不了支持快充的充电器&#xff0c;现在市面上的快充头很多&#xff0c;安全性和便携性是我们选择时的重点关注方向&#xff0c;我目前用的是战飞ZEFi冰精灵&#xff0c;这款产品有着独特…

Web攻防07_文件上传基础_文件上传靶场upload-labs-docker

文章目录 项目安装安装docker进入项目目录&#xff1a;一键部署运行 靶场关卡1、前端JS验证如何判断是否为前端验证解法1&#xff1a;抓包解法2&#xff1a;禁用JS 2、.htaccess解法 3、MIME类型解法 4、文件头判断5、黑名单过滤-过滤不严-单次过滤为空格6、黑名单-过滤不严-系…

(第61天)多租户架构(CDB/PDB)

背景介绍 Oracle 的 CDB 和 PDB 是 Oracle 12C 及以上版本中引入的新概念,用于管理多租户数据库环境。 Oracle 数据库是商业数据库领域中的翘楚,其强大的功能和高可靠性备受企业用户追捧。而随着云计算和大数据时代的到来,Oracle 也不断推出新的技术以适应这些变化。CDB 技…

1.6 实战:Postman请求Get接口-获取用于登录的图形验证码

上一小节我们学习了Postman的布局,对Postman有了一个整体的认知,本小节我们就来实操一下Get接口。 我们打开Postman,点击我们之前创建的请求”获取登录页验证码“。我们在地址栏里填入获取登录页验证码的接口地址。怎么查看这个接口地址呢?我们打开校园二手交易系统,打开…

Microsoft visual studio 2013卸载方法

1、问 题 Microsoft visual studio 2013 无法通过【程序与功能】卸载 2、解决方法 使用微软的Microsoft visual studio 2013 专用卸载工具 工具下载链接&#xff1a;https://github.com/Microsoft/VisualStudioUninstaller/releases 或 链接&#xff1a;https://pan.baidu.c…