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 定界符格式引起的错误
May 24 PHP
PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
Nov 10 PHP
ThinkPHP空模块和空操作详解
Jun 30 PHP
phplot生成图片类用法详解
Jan 06 PHP
Symfony模板的快捷变量用法实例
Mar 17 PHP
超强多功能php绿色集成环境详解
Jan 25 PHP
利用PHPExcel实现Excel文件的写入和读取
Apr 26 PHP
使用ThinkPHP生成缩略图及显示
Apr 27 PHP
Ecshop 后台添加新功能栏目及管理权限设置教程
Nov 21 PHP
php源码的使用方法讲解
Sep 26 PHP
Laravel解决nesting level错误和隐藏index.php的问题
Oct 12 PHP
thinkphp框架类库扩展操作示例
Nov 26 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 字符串压缩方法比较示例
2014/01/23 PHP
PHP中source #N问题的解决方法
2014/01/27 PHP
ThinkPHP调用common/common.php函数提示错误function undefined的解决方法
2014/08/25 PHP
PHP实现阳历到农历转换的类实例
2015/03/07 PHP
PHP判断上传文件类型的解决办法
2015/10/20 PHP
通过PHP实现获取访问用户IP
2020/05/09 PHP
一次失败的jQuery优化尝试小结
2011/02/06 Javascript
JavaScript String.replace函数参数实例说明
2013/06/06 Javascript
jQuery的css()方法用法实例
2014/12/24 Javascript
JavaScript中使用sencha gridpanel 编辑单元格、改变单元格颜色
2015/11/26 Javascript
基于jQuery实现Tabs选项卡自定义插件
2016/11/21 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
2017/01/03 Javascript
JS实现控制图片显示大小的方法【图片等比例缩放功能】
2017/02/18 Javascript
jQuery手风琴的简单制作
2017/05/12 jQuery
javascript  数组排序与对象排序的实例
2017/07/17 Javascript
Vue-Router2.X多种路由实现方式总结
2018/02/09 Javascript
浅谈Webpack 持久化缓存实践
2018/03/22 Javascript
Angular通过指令动态添加组件问题
2018/07/09 Javascript
vue组件(全局,局部,动态加载组件)
2018/09/02 Javascript
使用layui的router来进行传参的实现方法
2019/09/06 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
[01:34]传奇从这开始 2016国际邀请赛中国区预选赛震撼开启
2016/06/26 DOTA
浅析Python中将单词首字母大写的capitalize()方法
2015/05/18 Python
对于Python中RawString的理解介绍
2016/07/07 Python
将pandas.dataframe的数据写入到文件中的方法
2018/12/07 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
使用python制作一个解压缩软件
2019/11/13 Python
PyCharm如何导入python项目的方法
2020/02/06 Python
使用anaconda安装pytorch的实现步骤
2020/09/03 Python
Python使用socket_TCP实现小文件下载功能
2020/10/09 Python
CSS3新属性transition-property transform box-shadow实例学习
2013/06/06 HTML / CSS
Tenstickers法国:墙贴和装饰贴纸
2019/08/26 全球购物
医疗器械售后服务承诺书
2014/05/21 职场文书
股东授权委托书
2014/10/15 职场文书
2015年幼儿园大班工作总结
2015/04/25 职场文书
用Java实现简单计算器功能
2021/07/21 Java/Android