boaPHP开发手册v5.5

自动验证

当你访问一个请求变量时,系统会自动按动作名加载验证配置文件(一个动作对应一个配置文件),以变量名为键名检索对应验证规则,按条件的定义顺序依次执行,可根据需要设置检查和过滤的先后顺序

配置文件

配置文件命名规则:模块/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类