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 相关文章推荐
PHP面向对象编程快速入门
Dec 14 PHP
php使用多个进程同时控制文件读写示例
Feb 28 PHP
php命令行使用方法和命令行参数说明
Apr 08 PHP
PHP遍历文件夹与文件类及处理类用法实例
Sep 23 PHP
PHP生成RSS文件类实例
Dec 05 PHP
PHP中的命名空间详细介绍
Jul 02 PHP
php根据日期显示所在星座的方法
Jul 13 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
Mar 20 PHP
php实现登录tplink WR882N获取IP和重启的方法
Jul 20 PHP
php如何比较两个浮点数是否相等详解
Feb 12 PHP
php和html的区别点详细总结
Sep 24 PHP
PHP7生产环境队列Beanstalkd用法详解
May 19 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
php简单实现sql防注入的方法
2016/04/22 PHP
return false,对阻止事件默认动作的一些测试代码
2010/11/17 Javascript
jquery.combobox中文api和例子,修复了上面的小bug
2011/03/28 Javascript
JavaScript的null和undefined区别示例介绍
2014/09/15 Javascript
JavaScript实现的一个计算数字步数的算法分享
2014/12/06 Javascript
JavaScript实现九九乘法表的简单实例
2016/06/07 Javascript
JavaScript中ES6 Babel正确安装过程
2016/07/18 Javascript
Nodejs中解决cluster模块的多进程如何共享数据问题
2016/11/10 NodeJs
详解nodejs微信公众号开发——5.素材管理接口
2017/04/11 NodeJs
详解Vue 开发模式下跨域问题
2017/06/06 Javascript
浅谈Angular4实现热加载开发旅程
2017/09/08 Javascript
vue2.0 axios跨域并渲染的问题解决方法
2018/03/08 Javascript
p5.js入门教程之小球动画示例代码
2018/03/15 Javascript
AngularJS下$http服务Post方法传递json参数的实例
2018/03/29 Javascript
基于Three.js实现360度全景图片
2018/12/30 Javascript
vue实现户籍管理系统
2020/05/29 Javascript
vue中使用vue-pdf的方法详解
2020/09/05 Javascript
Vue组件生命周期运行原理解析
2020/11/25 Vue.js
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
Python中常用信号signal类型实例
2018/01/25 Python
Python Pandas找到缺失值的位置方法
2018/04/12 Python
Python WEB应用部署的实现方法
2019/01/02 Python
Python这样操作能存储100多万行的xlsx文件
2019/04/16 Python
python对csv文件追加写入列的方法
2019/08/01 Python
python实现从尾到头打印单链表操作示例
2020/02/22 Python
用Python实现职工信息管理系统
2020/12/30 Python
html5 worker 实例(二) 图片变换效果
2013/06/24 HTML / CSS
数控专业个人求职信范例
2013/11/29 职场文书
千元咖啡店的创业计划书范文
2013/12/29 职场文书
中级会计职业生涯规划范文
2014/01/16 职场文书
祖国在我心中演讲稿300字
2014/05/04 职场文书
学校领导班子成员查摆问题及整改措施
2014/10/28 职场文书
后勤个人工作总结
2015/02/28 职场文书
暑期社会实践个人总结
2015/03/06 职场文书
公司捐书倡议书
2015/04/27 职场文书
考生诚信考试承诺书
2015/04/29 职场文书