thinkPHP5框架自定义验证器实现方法分析


Posted in PHP onJune 11, 2018

本文实例讲述了thinkPHP5框架自定义验证器实现方法。分享给大家供大家参考,具体如下:

普通的验证器手册上已经很详细,我们讲解一下如何自定义一个验证器

首先我们在模块目录下建立validata文件夹

然后在里面建立一个类,取名为IdMustInt.php

代码如下:注意,我的模块名为api,所以命名空间如下

保护属性$rule为官方规定,不能改变,其实验证规则require都是封装好的函数名,所以我们也建立一个方法,方法名填写在验证规则后面即可

namespace app\api\validate;
use think\Validate;
class IdMustInt extends Validate
{
  protected $rule = [
    'id' => 'require|IsInt'
  ];
  protected function IsInt($value,$rule,$data,$field){
  //参数依次为验证数据,验证规则,全部数据(数组),字段名
  //这里我们要判断的验证的数据要求必须为正整型
    if(is_numeric($value) && is_int($value+0) && ($value+0) > 0){
      return true;
    }else{
  //如果不符合我们的条件,返回错误信息,在控制器中可以用getError()方法输出
      return $field.'不是整型';
    }
  }
}

接下来看我们控制器的对应操作

public function getBanner($id)
{
    //需要验证的数据
    $data = [
      'id' => $id,
    ];
  //实例化验证器
    $validate = new IdMustInt();
  //如果验证数据较多,条件也较多,需要批量返回所有错误信息的话,可以在check()前加上$validata->batch()
    $result = $validate->check($data);
    if($result){
      //业务逻辑
    }else{
      dump($validate->getError());
    }
}

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
利用文件属性结合Session实现在线人数统计
Oct 09 PHP
在PHP中检查PHP文件是否有语法错误的方法
Dec 23 PHP
php下通过IP获取地理位置的代码(小偷程序)
Jun 09 PHP
Ajax+PHP快速上手及简单应用说明
Jul 24 PHP
PHP的拦截器实例分析
Nov 03 PHP
php中静态类与静态变量用法的区别分析
Jan 15 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
May 12 PHP
PHP中使用curl伪造IP的简单方法
Aug 07 PHP
学习php设计模式 php实现备忘录模式(Memento)
Dec 09 PHP
PHP加密解密类实例代码
Jul 20 PHP
thinkphp 手机号和用户名同时登录
Jan 20 PHP
PHP使用PDO操作sqlite数据库应用案例
Mar 07 PHP
PHP绕过open_basedir限制操作文件的方法
Jun 10 #PHP
PHPMailer ThinkPHP实现自动发送邮件功能
Jun 10 #PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
Jun 09 #PHP
PHP实现二维数组中的查找算法小结
Jun 09 #PHP
PHP实现链表的定义与反转功能示例
Jun 09 #PHP
thinkPHP框架实现的无限回复评论功能示例
Jun 09 #PHP
ThinkPHP5框架实现简单的批量查询功能示例
Jun 07 #PHP
You might like
动易数据转成dedecms的php程序
2007/04/07 PHP
php Smarty date_format [格式化时间日期]
2010/03/15 PHP
浅析Yii2中GridView常见操作
2016/04/22 PHP
实例介绍PHP删除数组中的重复元素
2019/03/03 PHP
Codeigniter里的无刷新上传的实现代码
2019/04/14 PHP
javascript URL编码和解码使用说明
2010/04/12 Javascript
Extjs4 Treegrid 使用心得分享(经验篇)
2013/07/01 Javascript
JS实现拖动示例代码
2013/11/01 Javascript
jquery SweetAlert插件实现响应式提示框
2015/08/18 Javascript
AngularJS ng-change 指令的详解及简单实例
2016/07/30 Javascript
原生JS实现的放大镜效果实例代码
2016/10/15 Javascript
详解js树形控件—zTree使用总结
2016/12/28 Javascript
JQuery 选择器、DOM节点操作练习实例
2017/09/28 jQuery
jQuery EasyUI 折叠面板accordion的使用实例(分享)
2017/12/25 jQuery
javascript中floor使用方法总结
2019/02/02 Javascript
vue计算属性computed的使用方法示例
2019/03/13 Javascript
jquery ui 实现 tab标签功能示例【测试可用】
2019/07/25 jQuery
微信小程序上传帖子的实例代码(含有文字图片的微信验证)
2020/07/11 Javascript
[11:57]《一刀刀一天》第十七期:TI中国军团加油!
2014/05/26 DOTA
[01:04:06]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第一局
2016/02/26 DOTA
Python里隐藏的“禅”
2014/06/16 Python
Python写的贪吃蛇游戏例子
2014/06/16 Python
基于python socketserver框架全面解析
2017/09/21 Python
运行django项目指定IP和端口的方法
2018/05/14 Python
Python简单读写Xls格式文档的方法示例
2018/08/17 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
2019/11/15 Python
css3+伪元素实现鼠标移入时下划线向两边展开的效果
2017/04/25 HTML / CSS
美国高档百货Nordstrom的折扣店:Nordstrom Rack
2017/11/13 全球购物
淘宝活动策划方案
2014/02/06 职场文书
家居装修公司创业计划书范文
2014/03/20 职场文书
毕业晚会主持词
2014/03/24 职场文书
财务会计专业求职信
2014/06/09 职场文书
房屋租赁授权委托书范本
2014/09/20 职场文书
陪护人员误工证明
2015/06/24 职场文书
2019年暑期法院实习报告
2019/12/18 职场文书
奥特曼十大神器:奥特手镯在榜,第一是贝利亚的神器
2022/03/18 日漫