当你访问一个请求变量时,系统会自动按动作名加载验证配置文件(一个动作对应一个配置文件),以变量名为键名检索对应验证规则,按条件的定义顺序依次执行,可根据需要设置检查和过滤的先后顺序
配置文件
配置文件命名规则:模块/variable/控制器/动作.php ,一个完整的配置文件示例(验证规则测试工具):
return [
'user' => [ // 前端表单字段名称
'label' => '用户名', // 出错时会输出给前端
'check' => 'required&is_name', // &表示需同时满足2项检查(检查器中的方法)
'filter' => 'htmlspecialchars' // 通过以上各项检查后,再用PHP内置函数过滤
],
'pass' => [
'label' => '密码',
'chars' => '>=6 & <=16', // 密码字符数需要在6-16之间
'equal' => 'repass' // 密码内容要和 repass 字段的内容相同
],
'age' => [
'label' => 'home.user.age', // 也可以使用语言标签
'filter' => 'intval', // 过滤成整数
'value' => '>=18' // 年龄字段的值要大于等于18
],
'skill' => [
'label' => '技能',
'items' => '>2&<6' // 技能项选择要2-6个之间
],
'content' => [
'label' => '内容',
'check' => 'required',
'filter' => 'xss' // 进行XSS过滤
]
]
验证规则复用
多个动作验证规则中如果大量重复的部分,不想每次重复定义,可以在配置文件中用如下方式进行复用:
<?php
$common = include('../common.php'); // 将重复部分定义在公用验证规则里
$arr = [
'name' => ['...']
]; // 当前验证规则,去除公共重复的部分
$arr = array_merge($common, $arr); // 合并验证规则
return $arr; // 返回规则数组
?>
逻辑运算符
- |:条件或(OR)
- &:条件与(AND)
比如:a&b|c&d|e 等于:(a AND b) OR (c AND d) OR e
算术运算符
- >:大于
- <:小于
- >=:大于等于
- <=:小于等于
- =:等于
- !=:不等于
- <>:不等于
label
标签名,支持语言标签(如:a.b.c),会出现输出结果中
chars
字符数,支持|和&,验证字符长度,对于数组则逐项验证
value
数值,支持|和&,验证值大小,对于数组则逐项验证
items
选择项,支持|和&,验证多选项选中数目
equal
值等于,验证值是否等于指定字段值,多用于密码重复验证
check
检查器,支持&,用检查器中方法检查变量,对于数组则逐项验证
默认检查器位置:boa/validater/checker.php,您也可以创建一个继承默认检查器的自定义检查器,比如:mod/home/validater/checker.php,系统优先使用自定义检查器(同时具有默认检查器所有功能)
默认检查器参见:checker类
filter
过滤器,支持&,用过滤器中方法或PHP内置函数过滤变量(函数和方法同名情况下,优先使用过滤器方法),对于数组则逐项过滤,返回处理后的结果
默认过滤器位置:boa/validater/filter.php,您也可以创建一个继承默认过滤器的自定义过滤器,比如:mod/home/validater/filter.php,系统优先使用自定义过滤器(同时具有默认过滤器所有功能)
如果未定义过滤器,则使用系统过滤器:FILTER;如果定义过滤器为空值,也会覆盖FILTER的定义;若FILTER也未定义,则不执行过滤
如果过滤器定义在其他规则前,则会先过滤,再对过滤结果执行验证,反之亦然
默认过滤器参见:filter类