6验证规则
未知
2021-07-04 11:41:20
0

验证规则的定义通常有两种方式,如果你使用了验证器的话,通常通过rule属性定义验证规则,而如果使用的是独立验证的话,则是通过rule方法进行定义。

属性定义

属性定义方式仅限于验证器,通常类似于下面的方式:

<?php
namespace app\validate;

use think\Validate;

class User extends Validate
{
    protected $rule = [
      'name'  => 'require|max:25',
      'age'   => 'number|between:1,120',
      'email' => 'email',
    ];

}
复制

系统内置了一些常用的验证规则可以满足大部分的验证需求,具体每个规则的含义参考内置规则一节。

因为一个字段可以使用多个验证规则(如上面的age字段定义了numberbetween两个验证规则),在一些特殊的情况下,为了避免混淆可以在rule属性中使用数组定义规则。

<?php
namespace app\validate;

use think\Validate;

class User extends Validate
{
    protected $rule = [
      'name'  => ['require', 'max' => 25, 'regex' => '/^[\w|\d]\w+/'],
      'age'   => ['number', 'between' => '1,120'],
      'email' => 'email',
    ];

}
复制

方法定义

如果使用的是独立验证(即手动调用验证类进行验证)方式的话,通常使用rule方法进行验证规则的设置,举例说明如下。独立验证通常使用Facade或者自己实例化验证类。

$validate = \think\facade\Validate::rule('age', 'number|between:1,120')
->rule([
    'name'  => 'require|max:25',
    'email' => 'email'
]);

$data = [
    'name'  => 'thinkphp',
    'email' => 'thinkphp@qq.com'
];

if (!$validate->check($data)) {
    dump($validate->getError());
}
复制

rule方法传入数组表示批量设置规则。

rule方法还可以支持使用对象化的规则定义。

我们把上面的验证代码改为

use think\facade\Validate;
use think\validate\ValidateRule as Rule;

$validate = Validate::rule('age', Rule::isNumber()->between([1,120]))
->rule([
    'name'  => Rule::isRequire()->max(25),
    'email' => Rule::isEmail(),
]);

$data = [
    'name'  => 'thinkphp',
    'email' => 'thinkphp@qq.com'
];

if (!$validate->check($data)) {
    dump($validate->getError());
}
复制

可以对某个字段使用闭包验证,例如:

$validate = Validate::rule([
    'name'  => function($value) { 
        return 'thinkphp' == strtolower($value) ? true : false;
    },
]);
复制

闭包支持传入两个参数,第一个参数是当前字段的值(必须),第二个参数是所有数据(可选)。

如果使用了闭包进行验证,则不再支持对该字段使用多个验证规则。

闭包函数如果返回true则表示验证通过,返回false表示验证失败并使用系统的错误信息,如果返回字符串,则表示验证失败并且以返回值作为错误提示信息。

$validate = Validate::rule([
    'name'  => function($value) { 
        return 'thinkphp' == strtolower($value) ? true : '用户名错误';
    },
]);
复制

属性方式定义验证规则不支持使用对象化规则定义和闭包定义

全局扩展

你可以在扩展包或者应用里面全局注册验证规则,使用方法

Validate::maker(function($validate) {
    $validate->extend('extra', 'extra_validate_callback');
});
复制

上一篇:6验证器

下一篇:6错误提示信息

相关内容

有影院靠《哪吒2》7天赚了...
《哪吒2》上映七天创下影院高收益奇迹,吸引观众热议和业界高度评价。...
2025-02-10 06:46:40
国产剧终于有不靠男主救的女...
国产剧新趋势:女主角不再依赖男主救援,展现独立与坚强。打破传统模式...
2025-02-10 05:46:37
网络木马攻击中的隐藏技术及...
本文详述了网络木马攻击中的伪装、加密、进程注入与隐藏等技术手段及其...
2025-02-10 04:23:42
网络木马攻击中的钓鱼欺诈手...
本文详述了网络木马攻击中的钓鱼欺诈手段,包括邮件钓鱼、社交工程钓鱼...
2025-02-10 03:46:41
剖析网络木马攻击的技术原理...
本文深入剖析了网络木马攻击的技术原理与攻击方式,包括其隐藏性、伪装...
2025-02-10 03:00:40
网络木马攻击案例剖析:从成...
本文剖析一起网络木马攻击案例,从成功到失败的转变过程揭示网络安全的...
2025-02-10 02:46:38

热门资讯

tp6开发规范 命名规范 请理解并尽量遵循以下命名规范,可以减少在开发过程中出现不必要的错误。 ThinkPHP6....
6高级查询 快捷查询 快捷查询方式是 一种多字段相同查询条件 的简化写法,可以进一步简化查询条件的写法,在多个字...
tp6多应用提示控制器不存在:... 第一个情况是没有使用composer安装扩展。 如果要使用多应用模式, 你需要win+r,cmd指针...
6配置 配置目录 单应用模式 对于单应用模式来说,配置文件和目录很简单,根目录下的 config 目录下面就...
6异常处理 和PHP默认的异常处理不同,ThinkPHP抛出的不是单纯的错误信息,而是一个人性化的错误页面。 异...
6swoole 本篇内容主要讲述了最新的 think-swoole 扩展的使用。目前仅支持Linux环境或者MacO...
6助手函数 助手函数 系统为一些常用的操作方法封装了助手函数,便于使用,包含如下: 助手函数 描述 abort ...
6查询表达式 查询表达式 查询表达式支持大部分的SQL查询语法,也是 ThinkPHP 查询语言的精髓,查询表达式...
6路由参数 路由参数 路由分组及规则定义支持指定路由参数,这些参数主要完成路由匹配检测以及后续行为。 路由参数可...
6查询 模型查询和数据库查询方法的区别主要在于,模型中的查询的数据在获取的时候会经过获取器的处理,以及更加对...