poetbi / boaphp

boaPHP是一款免费开源、灵活易用的配置式PHP框架,MVC设计模式,完全面向对象,易学易用、便于快速开发
Apache License 2.0
56 stars 3 forks source link

关于自动验证器 #3

Closed ziqiming closed 1 year ago

ziqiming commented 1 year ago

如我的请求为 :

创建用户 home/user/add

编辑用户 home/user/set

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

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

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

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

poetbi commented 1 year ago

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

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

ziqiming commented 1 year ago

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

poetbi commented 1 year ago

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

<?php

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

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

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

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

?>

ziqiming commented 1 year ago

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

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

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

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

用这个方法还行吗?

poetbi commented 1 year ago

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

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

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

var_dump($res);

poetbi commented 1 year ago

后续出个规则测试工具