poetbi/boaphp

关于自动验证器

Closed this issue · 6 comments

如我的请求为 :

创建用户
home/user/add

编辑用户
home/user/set

那么我就要在
variable文件夹中建立两个文件

/user/add.php
/user/set.php

这两个都对username的账号进行自动验证,这样就有了很多的重复代码

那么能不能有一个通用的
比如在variable/user/ 建立一个 index.php或者 common.php写一个验证规则,这两个动作都能生效呢?

poetbi commented

如果两个动作代码相似度较大,可以写成一个动作,通过某个参数来区分。

建议安装DEMO,查看里面的示例用法

刚看了DEMO,,确实比以前的DEMO写的详细多了。
验证器的验证规则,好多文件都有USER的相关验证。。重复的太多啦。最好还是出一个通用验证的文件
比如通用参数 ID USER PASS 等等,设置以后,不管这个参数在哪个动作使用,都可以验证它。这样更简单

poetbi commented

后续我考虑如何方便的实现,目前可以这么做,在一个验证规则文件里包含另一个公共验证规则:

<?php

$common = include('../common.php'); // 一个公共验证规则

$arr = ['...']; // 当前验证规则,去除公共重复的部分

$arr = array_merge($common, $arr); // 合并验证规则

return $arr; // 这里要返回数组

?>

这个解决办法好粗暴,,,,比如这样的

默认是这个规则
'id' => [
'label' => 'ID', 'check' => 'is_alnum'
],

在某些文件ID为必填写的
要改为

'id' => [
'label' => 'ID', 'check' => 'required&is_alnum'
],

用这个方法还行吗?

poetbi commented

我不知道你的id什么类型,如果整型不要这么做的,如果是字符串直接用is_alnum就可以了(检测是否字母或数字),空值肯定不通过,具体可以用如下方法测试下结果:

$check = new \boa\validater\checker();

$res = $check->is_alnum($id);

var_dump($res);

poetbi commented

后续出个规则测试工具