thinkphp5.0自定义验证规则使用方法

1. 简介

在实际开发过程中,经常会遇到需求需要对某些输入框进行特定规则的验证。ThinkPHP框架提供了一些基本的验证规则,但是有些复杂的规则需要我们自己来定义。这时就需要用到自定义验证规则。

2. 自定义规则

ThinkPHP规定,自定义规则需要在应用的'extend'目录下新建一个Validation.php类。该类要继承framework目录下的Validate类。然后在自定义规则中使用rule方法来定义规则。

namespace app\extend;

use think\Validate;

class Validation extends Validate

{

protected $rule = [

'phone' => 'require|checkPhone',

];

//自定义的规则,手机格式

protected function checkPhone($value)

{

$isMob = "/^1[3456789]{1}\d{9}$/";

$isTel = "/^([0-9]{3,4}-)?[0-9]{7,8}$/";

if (preg_match($isMob, $value) || preg_match($isTel, $value)) {

return true;

} else {

return '手机格式不正确!';

}

}

}

2.1 自定义规则说明

我们在Validation类中使用rule方法来定义规则,其中$key是要验证的键名,$rule是键值对应的规则数组。在上面的例子中,我们自定义了一个手机验证的规则,它的键名为phone。其中涉及到“正则表达式”的知识,常见的“正则表达式”可以参见这个地址:https://www.runoob.com/regexp/regexp-syntax.html

2.2 自定义规则调用

在使用自定义验证规则时,我们需要在验证规则调用中指定Validation类:

use app\extend\Validation;

$data = [

'phone' => '15812345678',

];

$validate = new Validation;

if (!$validate->check($data)) {

dump($validate->getError());

}

如上例所示,我们需要在验证过程中使用use关键字来引入Validation类。然后在验证函数中新建一个Validation对象,并在check方法中传入要验证的数组。在验证失败时,我们可以通过getError方法来获取验证器的错误信息。

后端开发标签