w7 / engine-validate
微梦增强表单验证
Requires
- php: >=8.1
- itwmw/validation: ^2.3.1
Requires (Dev)
- phpunit/phpunit: ^9|^10|^11
- 6.x-dev
- 5.x-dev
- v5.2.2.1
- v5.2.2
- v5.2.1
- v5.2.0
- v5.1.0
- v5.0.1
- v5.0.0
- 4.x-dev
- v4.4.2
- v4.4.1
- v4.4.0
- v4.3.0
- v4.2.4
- v4.2.3
- v4.2.2
- v4.2.1
- v4.2.0
- v4.1.2
- v4.1.1
- v4.1.0
- v4.0.0
- v4.0.0-rc.1
- v4.0.0-beta.4
- v4.0.0-beta.3
- v4.0.0-beta.2
- v4.0.0-beta.1
- v4.0.0-alpha.2
- v4.0.0-alpha.1
- 3.x-dev
- v3.7.1
- v3.7.0
- v3.6.0
- v3.5.1
- v3.5.0
- v3.4.4
- v3.4.3
- v3.4.2
- v3.4.1
- v3.4.0
- v3.3.3
- v3.3.2
- v3.3.1
- v3.3.0
- v3.2.9
- v3.2.8
- v3.2.7
- v3.2.6
- v3.2.5
- v3.2.4
- v3.2.3
- v3.2.2
- v3.2.1
- v3.2.0
- v3.1.2
- v3.1.1
- v3.1.0
- v3.0.2
- v3.0.1
- v3.0.0
- 2.x-dev
- 1.x-dev
This package is auto-updated.
Last update: 2024-10-24 09:33:19 UTC
README
中文 | English
介绍
一个让你的表单验证更为方便,快捷,安全的扩展,满足你的一切验证需求。
目录
安装
使用composer命令
composer require itwmw/validate
完整文档查看完整文档
简单验证
支持简单定义一个验证器并进行验证:
try {
$data = Validate::make([
'user' => 'required|email',
'pass' => 'required|lengthBetween:6,16',
], [
'user.required' => '请输入用户名',
'user.email' => '用户名格式错误',
'pass.required' => '请输入密码',
'pass.lengthBetween' => '密码长度为6~16位',
])->check($data);
} catch (ValidateException $e) {
echo $e->getMessage();
}
如果验证通过,则返回所有通过验证的值,如未通过,则抛出一个Itwmw\Validate\Exception\ValidateException
异常
验证器定义
为具体的验证场景或者数据表单定义验证器类,我们需要继承Itwmw\Validate\Validate
类,然后实例化后直接调用验证类的check
方法即可完成验证,下面是一个例子:
我们定义一个LoginValidate
验证器类用于登录的验证。
class LoginValidate extends Validate
{
protected $rule = [
'user' => 'required|email',
'pass' => 'required|digits_between:6,16',
];
protected $message = [
'user.required' => '请输入用户名',
'user.email' => '用户名格式错误',
'pass.required' => '请输入密码',
'pass.digits_between' => '密码长度为6~16位',
];
}
类属性定义的错误消息,优先级要高于自定义规则中的默认回复,高于自定义规则方法返回的错误
数据验证
$data = [
'user' => '123@qq.com',
'pass' => ''
];
$validate = new LoginValidate();
$validate->check($data);
此时会抛出一个Itwmw\Validate\Exception\ValidateException
异常,message为请输入密码
$data = [
'user' => '123@qq.com',
'pass' => '123456'
];
$validate = new LoginValidate();
$data = $validate->check($data);
验证成功,并返回通过验证的值,返回的值为数组类型
验证数组
验证表单的输入为数组的字段也不难。你可以使用 「点」方法来验证数组中的属性。例如,如果传入的 HTTP 请求中包含search[keyword]
字段, 可以如下验证:
protected $rule = [
'search.order' => 'numeric|between:1,2',
'search.keyword' => 'chsAlphaNum',
'search.recycle' => 'boolean',
];
你也可以验证数组中的每个元素。例如,要验证指定数组输入字段中的每一个 id 是唯一的,可以这么做:
protected $rule = [
'search.*.id' => 'numeric|unique:account'
];
数组规则的错误消息的定义也一样
protected $message = [
'search.order.numeric' => '排序参数错误',
'search.order.between' => '排序参数错误',
'search.keyword.chsAlphaNum' => '关键词只能包含中文,字母,数字',
'search.recycle.boolean' => '参数错误:recycle',
];
验证器类属性
$rule
用户定义验证器的验证规则,也可以通过setRules
方法来进行设置,此方法为叠加,如果参数为null
则为清空全部规则
// 类中定义
protected $rule = [
'user' => 'required'
];
// 使用方法定义
$v->setRules([
'user' => 'required'
]);
$message
用户定义验证器的错误信息,也可以通过setMessages
方法来进行设置,此方法为叠加,如果参数为null
则为清空全部错误消息
// 类中定义
protected $message = [
'user.required' => '账号必须填写'
];
// 使用方法定义
$v->setMessages([
'user.required' => '账号必须填写'
]);
更多用法可以查看错误消息一节
$scene
定义验证场景的数据,用于指定验证场景对应的验证字段等,详细用法查看验证场景一节,同样也可以通过setScene
方法来进行设置,此方法为叠加,如果参数为null
则为清空全部验证场景
// 类中定义
protected $scene = [
'login' => ['user', 'pass']
];
// 使用方法定义
$v->setScene([
'login' => ['user', 'pass']
]);
$event
定义此验证器下的全局事件,详细用法查看事件一节
protected $event = [
CheckSiteStatus::class
];
$customAttributes
定义验证字段的名称,也可以通过setCustomAttributes
方法来进行设置,此方法为叠加,如果参数为null
则为清空全部字段名称,
错误消息中的:attribute会使用下面的值对应的替换
protected $customAttributes = [
'user' => '账号',
'pass' => '密码'
];
$preprocess
为字段定义一个前置数据处理器
protected $preprocessor = [
'name' => ['默认名称', ProcessorExecCond::WHEN_EMPTY]
];
关于前置数据处理器的详情请查看数据处理器一节
$postprocessor
为字段定义一个后置数据处理器
protected $postprocessor = [
'name' => ['trim', ProcessorExecCond::WHEN_NOT_EMPTY, ProcessorParams::Value]
];
关于后置数据处理器的详情请查看数据处理器一节
$ruleMessage
当前类中自定义方法验证失败后的错误消息
protected $ruleMessage = [
':attribute的值只能具有中文'
];
点击查看示例
$regex
预定义正则表达式验证规则,详情查看正则表达式规则
protected $regex = [
'number' => '/^\d+$/'
];
$group
定义验证规则组
protected $group = [
'username' => 'alpha_num|min:5|max:10'
];
protected $rule = [
'username' => 'required|username'
];
也可以使用数组格式:
protected $group = [
'username' => [
'alpha_num',
'min:5',
'max:10'
]
];
protected $rule = [
'username' => 'required|username'
];
特别鸣谢
感谢 Jetbrains 提供的 IDE 开源许可。