ThinkPHP 表单验证使用

news2024/11/27 16:40:14

对前端或表单请求的数据,一定要做校验,而使用ThinkPHP 验证器则可以事半功倍。

可以使用validate助手函数(或者封装验证方法)进行验证。TP版本6.1。

目录

验证场景

验证器

创建验证器

定义规则和提示

数据验证

独立验证:

加载规则

定义错误提示

数据验证

总结:


验证场景

系统内置了一些常用的验证规则,可以完成大部分场景的验证需求,包括:

  • 格式验证类
  • 长度和区间验证类
  • 字段比较类
  • filter验证
  • 正则验证
  • 上传验证
  • 其它验证

验证器

我们定义一个\app\validate\User验证器类用于User的验证。

快速生成验证器

命令如下:

php think make:validate User

创建验证器

$ php think make:validate User
Validate:app\validate\User created successfully.

在app下创建了validate文件夹和User.php文件

文件内容如下:

<?php
declare (strict_types = 1);

namespace app\validate;

use think\Validate;

class User extends Validate
{
    /**
     * 定义验证规则
     * 格式:'字段名' =>  ['规则1','规则2'...]
     *
     * @var array
     */
    protected $rule = [];

    /**
     * 定义错误信息
     * 格式:'字段名.规则名' =>  '错误信息'
     *
     * @var array
     */
    protected $message = [];
}

 定义规则和提示

/**
 * 定义验证规则
 * 格式:'字段名' =>  ['规则1','规则2'...]
 *
 * @var array
 */
protected $rule = [
    'phone' => 'require|between:11,12',
    'pwd' => 'require|max:10'
];

/**
 * 定义错误信息
 * 格式:'字段名.规则名' =>  '错误信息'
 *
 * @var array
 */
protected $message = [
    'phone.require' => '请输入手机号!',
    'phone.between' => '联系电话为11-12位!',
    'pwd.require' => '请输入密码!',
    'pwd.max' => '密码最多输入10位',
];

 数据验证

try {
   validate(User::class)->check($data);
} catch (\think\exception\ValidateException $e) {
    echo $e->getError();die;
}

 这一步为什么用try...catch..,因为不用的话,错误会抛出异常。

独立验证

加载规则

使用门面Validate,调用rule加载规则:

$rules = [
    'phone' => 'require|between:11,12',
    'pwd' => 'require|max:10'
];
$validate = \think\facade\Validate::rule($rules);

定义错误提示

使用message方法加载自定义错误提示

$messages = [
    'phone.require' => '请输入手机号!',
    'phone.between' => '联系电话为11-12位!',
    'pwd.require' => '请输入密码!',
    'pwd.max' => '密码最多输入10位',
];
$validate = \think\facade\Validate::rule($rules)->message($messages);

数据验证

if(!$validate->check($data)) {
    echo $validate->getError();
}

总结:

验证器需要创建单独的类文件,在其中定义验证规则和错误信息提示;

独立验证不需要创建类文件,可直接调用,但也需要定义规则和错误信息提示。

这两种都可以使用,可以根据业务需求,按需使用!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Arbotix使用

内容学自赵虚左的视频及资料 需求描述: 控制机器人模型在 rviz 中做圆周运动 1.安装 Arbotix 方式1:命令行调用 sudo apt-get install ros-<<VersionName()>>-arbotix <<VsersionName()>> 替换成当前 ROS 版本名称 添加 arbotix 所需配置文件 # …

Web原型设计规范

上篇文章为大家介绍了app端在进行原型设计时的设计规范&#xff0c;本篇将继续为大家介绍一下Web端&#xff08;这里主要指网页端&#xff09;的设计规范。其实web端的设计规范并没有像app端那样多&#xff0c;因为展示的空间比较大&#xff0c;所有要求也就没有那么严苛。 电脑…

Spring_事务

事务的主要内容 事务定义 特性&#xff1a;ACID 并发时产生的问题 事务的隔离级别 锁 事务的传播特性 异常处理 超时 只读事务 TransactionDefinition 并发时产生的问题 一个数据库可以允许多个客户端同时访问&#xff0c;即并发的方式访问数据库。数据库中的同一个数据可能同…

2023年12306购票平台自动化购票终|解决乘客选择与车票提交(附自动化购票完整源代码与演示视频)

目录 一、说明 1.1、背景 1.2、说明 二、步骤 2.1、切换视角检索乘车乘客 2.2、选择乘客 2.3、关闭学生票选择界面 2.4、提交订单 2.5、选择座位并确认 三、完整代码与视频演示 3.1、完整源代码如下 3.2、视频演示代码运行 四、结果 4.1、代码运行结果 五、总结…

windows获取iOS设备信息

依赖环境&#xff1a; 1.python3.6以上版本&#xff0c; 2.配置python的系统环境变量。 3.python已经安装pip。 安装tidevice: 1.打开cmd&#xff0c;输入命令pip3 install -U "tidevice[openssl]"如图所示&#xff0c;安装成功。 2.查看tidevice版本号&#xff0c…

网络超火的音效素材、BGM,全在这里了。

推荐几个超好用的音效素材网站&#xff0c;全网火爆的音效、BGM这里都能找到&#xff0c;自媒体、视频剪辑小伙伴必备&#xff01;建议收藏&#xff01; 1、菜鸟图库 https://www.sucai999.com/audio.html?vNTYwNDUx 菜鸟图库是一个综合性素材网站&#xff0c;站内涵盖设计、…

vector模拟实现之迭代器失效及深浅拷贝的问题

vector模拟实现 Tips&#xff1a;new申请空间不用判断&#xff0c;因为失败的话会抛异常。 STL源代码中vector的私有成员变量如下&#xff1a; private:iterator _start;//首元素iterator _finish;//最后一个有效数据的下一个&#xff0c;-_start为sizeiterator _endofstora…

6-3分布散度的9个梯度

( A, B )---1*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有1个节点&#xff0c;AB各由9张二值化的图片组成&#xff0c;排列组合A和B的所有可能性&#xff0c;固定收敛误差为7e-4&#xff0c;统计收敛迭代次数&#xff0c;并比较迭代次数的变化规律。 差值结构 A-B 迭代次数 …

Huawei Matebook X Pro 2018 Space Gray电脑 Hackintosh 黑苹果efi引导文件

硬件型号驱动情况主板Huawei Matebook X Pro 2018 Space Gray处理器Intel Core i7-8550U已驱动内存16 GB LPDDR4 2133 MHz已驱动硬盘LiteON SSD PCIe NVMe 512 GB [CA3-8D512]已驱动显卡NVIDIA GeForce MX150 (Disabled) / Intel(R) UHD Graphics 620已驱动声卡瑞昱ALC256 英特…

微积分——导数和切线问题

目录 1. 切线(Tangent Line)问题 2. 函数的导数(derivative) 3. 函数的可微性(differentiability)与连续性(Continuity) 1. 切线(Tangent Line)问题 微积分的出现源于17世纪欧洲数学家们正在研究解决的四个主要的问题&#xff1a; (1) 切线(tangent line)问题&#xf…

使用Alexnet实现CIFAR10数据集的训练

如果对你有用的话&#xff0c;希望能够点赞支持一下&#xff0c;这样我就能有更多的动力更新更多的学习笔记了。&#x1f604;&#x1f604; 使用Alexnet进行CIFAR-10数据集进行测试&#xff0c;这里使用的是将CIFAR-10数据集的分辨率扩大到224X224&#xff0c;因为在测试…

第03讲:Docker 容器的数据卷

一、什么是数据卷 数据卷是宿主机中的一个目录或文件&#xff0c;当容器目录或者文件和数据卷目录或者文件绑定后&#xff0c;对方的修改会立即同步&#xff0c;一个数据卷可以被多个容器同时挂载&#xff0c;一个容器也可以被挂载多个数据卷&#xff0c;数据卷的作用:容器数据…

基于遥感卫星影像水体提取方法综述

水体提取分类依据及基础 水体提取分类依据 水体提取的方法很多,很多学者也进行了分类,大体上有一个分类框架,主要是基于光学影像的分类,比如王航等[7]将水体提取分成3类,分别是基于阈值法、分类器法和自动化法; 李丹等[8]更深一步进行总结,引入近些年发展火热的基于雷达影像数…

Redisson自定义序列化

配置RedissonClientBean public RedissonClient redissonClient() {Config config new Config();// 单节点模式SingleServerConfig singleServerConfig config.useSingleServer();singleServerConfig.setAddress("redis://127.0.0.1:6379");singleServerConfig.set…

LeetCode二叉树经典题目(六):二叉搜索树

目录 28. LeetCode617. 合并二叉树 29. LeetCode700. 二叉搜索树中的搜索 30. LeetCode98. 验证二叉搜索树 31. LeetCode530. 二叉搜索树的最小绝对差 32. LeetCode501. 二叉搜索树中的众数 33. LeetCode236. 二叉树的最近公共祖先​ 28. LeetCode617. 合并二叉树 递归&…

Hi3861鸿蒙物联网项目实战:智能安防报警

华清远见FS-Hi3861开发套件&#xff0c;支持HarmonyOS 3.0系统。开发板主控Hi3861芯片内置WiFi功能&#xff0c;开发板板载资源丰富&#xff0c;包括传感器、执行器、NFC、显示屏等&#xff0c;同时还配套丰富的拓展模块。开发板配套丰富的学习资料&#xff0c;包括全套开发教程…

Windows11 系统打开IE浏览器的方式(完整版)

前言 大家好&#xff0c;好久不见&#xff01; 1、最近疯狂加班&#xff0c;旧电脑不太给力&#xff0c;换了新电脑&#xff0c;嘎嘎开心&#xff1b;开心之余发现新电脑是Win11系统的&#xff0c;但是IE浏览器找不到了&#xff0c;由于我的某些工作需要用到IE浏览器&#xf…

Vue2前端路由(vue-router的使用)、动态路由、路由和视图的命名以及声明式和编程式导航

目录 一、vue2的前端路由&#xff08;vue-router&#xff09; 1、路由&#xff1a;页面地址与组件之间的对应关系 2、路由方式&#xff1a;服务器端路由、前端路由 3、前端路由&#xff1a;在前端维护一组路由规则&#xff08;地址和组件之间的对应关系&#xff09;&#xf…

【UE4 第一人称射击游戏】34-制作一个简易计时器

上一篇&#xff1a;【UE4 第一人称射击游戏】33-创建一个迷你地图本篇效果&#xff1a;可以看到左上角有个简易的关卡计时器在倒计时步骤&#xff1a;打开“FPSHUD”&#xff0c;拖入一个图像控件图像选择“Timer_Backing”&#xff0c;尺寸改为4719拖入3个文本控件大小为1210字…

学习ffmpeg-录屏实现记录

项目需要一个录屏的功能&#xff0c;之前看到了一个使用Qt计时器截图avilib生成AVIffmpeg合并视频音频的方式&#xff1a;Qt C 录屏录音功能实现&#xff08;avilibffmpeg&#xff09;以及动态库生成https://blog.csdn.net/qq_35769071/article/details/125323624使用后&#x…