验证器定义
验证器的使用,我们必须先定义它,系统提供了一条命令直接生成想要的类php think make:validate User
<?php
declare (strict_types = 1);
namespace app\validate;
use think\Validate;
class User extends Validate
{
/**
* 定义验证规则
* 格式:'字段名' => ['规则1','规则2'...]
*
* @var array
*/
protected $rule = [
'name' => 'require|max:20|checkName:zsf', //不得为空,不得大于 20 位
'price' => 'number|between:1,100',//必须是数值,1-100 之间
'email' => 'email' //邮箱格式要正确
];
/**
* 定义错误信息
* 格式:'字段名.规则名' => '错误信息'
*
* @var array
*/
protected $message = [
'name.require' => '名称必须',
'name.max' => '名称最多不能超过 20 个字符',
'price.between' => '价格必须在 1-100 之间',
'email' => '邮箱格式错误'
];
/**
* User: wuJiaWei
* DateTime: 2024/6/27 9:20:10
* describe:
* @param $value
* @param $rule
*/
protected function checkName($value,$rule,$data,$field,$title)
{
// dump($value);//当前字段值
// dump($rule);//当前规则值
// dump($data);//所有数据信息
// dump($field);//当前字段名
// dump($title);//字段描述,没有就是字段名
return $rule != $value ? true : '名称存在非法称谓';
}
}
<?php
/**
* @description: TODO
* @author wuJiaWei
* @date 2024/6/26 17:22:42
* @version 1.0
*/
namespace app\controller;
use app\validate\User;
class Verify
{
public function index()
{
try {
$data = [ 'name' => 'zsf', 'price' => 901, 'email' => 'xiaoxin163.com' ];
// validate(User::class)->check($data);
validate(User::class)->batch(true)->check($data);
} catch (\Exception $e) {
var_dump($e->getMessage());
dump($e->getMessage());
}
}
}
独立验证
public function independent()
{
//use think\facade\Validate;
$data = [ 'name' => '蜡笔小新', 'price' => 901, 'email' => 'xiaoxin163.com' ];
$validate = Validate::rule([
'name' => 'require|max:20', //不得为空,不得大于 20 位
'price' => 'number|between:1,100',//必须是数值,1-100 之间
'email' => 'email' //邮箱格式要正确
]);
$result = $validate->batch(true)->check($data);
if(!$result){
dump($validate->getError());
}
}