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与MySQL开发中页面出现乱码的一种解决方法
Jul 29 PHP
PHP中查询SQL Server或Sybase时TEXT字段被截断的解决方法
Mar 10 PHP
PHP闭包(Closure)使用详解
May 02 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
Jun 21 PHP
php处理restful请求的路由类分享
Feb 27 PHP
基于php实现随机合并数组并排序(原排序)
Nov 26 PHP
详解EventDispatcher事件分发组件
Dec 25 PHP
php脚本守护进程原理与实现方法详解
Jul 20 PHP
ThinkPHP5+Layui实现图片上传加预览功能
Aug 17 PHP
laravel5.1框架基础之Blade模板继承简单使用方法分析
Sep 05 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
Feb 15 PHP
Yii实现微信公众号场景二维码的方法实例
Aug 30 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
把77A收信机改造成收音机
2021/03/02 无线电
文件上传的实现
2006/10/09 PHP
php获取服务器操作系统相关信息的方法
2016/10/08 PHP
前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)
2010/03/04 Javascript
Jquery Ajax学习实例7 Ajax所有过程事件分析示例
2010/03/23 Javascript
jQuery实现的输入框选择时间插件用法实例
2015/02/28 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
2015/03/02 Javascript
BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法
2016/06/07 Javascript
使用Bootstrap Tabs选项卡Ajax加载数据实现
2016/12/23 Javascript
nodejs实现的连接MySQL数据库功能示例
2018/01/25 NodeJs
angular 组件通信的几种实现方式
2018/07/13 Javascript
Bootstrap Table列宽拖动的方法
2018/08/15 Javascript
使用electron实现百度网盘悬浮窗口功能的示例代码
2018/10/24 Javascript
JS实现求5的阶乘示例
2019/01/21 Javascript
多个Vue项目部署到服务器的步骤记录
2020/10/22 Javascript
[01:16:01]VGJ.S vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
[52:02]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第一场 11.27
2020/11/30 DOTA
Python编程实现的简单Web服务器示例
2017/06/22 Python
python字典操作实例详解
2017/11/16 Python
浅谈Django REST Framework限速
2017/12/12 Python
Python干货:分享Python绘制六种可视化图表
2018/08/27 Python
Python对切片命名的实现方法
2018/10/16 Python
python绘制散点图并标记序号的方法
2018/12/11 Python
python3.6实现学生信息管理系统
2019/02/21 Python
python使用minimax算法实现五子棋
2019/07/29 Python
Python lambda表达式filter、map、reduce函数用法解析
2019/09/11 Python
input元素的url类型和email类型简介
2012/07/11 HTML / CSS
海外淘书首选:AbeBooks
2017/07/31 全球购物
英国男女豪华配饰和礼品网站:Black.co.uk
2020/02/28 全球购物
POS解决方案:MUNBYN(热敏打印机、条形码扫描仪)
2020/06/09 全球购物
Java中compareTo和compare的区别
2016/04/12 面试题
企业挂职心得体会
2014/09/10 职场文书
四川省传达学习贯彻党的群众路线教育实践活动总结大会精神新闻稿
2014/10/26 职场文书
小学英语教师研修感悟
2015/11/18 职场文书
什么是执行力?9个故事告诉您:成功绝非偶然!
2019/07/05 职场文书
用Python生成会跳舞的美女
2022/01/18 Python