-
Notifications
You must be signed in to change notification settings - Fork 24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Validate层级嵌套与预期不符 #26
Comments
问题出在 'fit_merchant_uid.*' => 'gt:0', 这个规则目前是不支持的 你可以在你的list验证规则里面附加判断处理一下 |
当嵌套层级只有一层的时候是生效的.另外,回滚到8.x-dev 12ce496时校验正常提示fit_merchant_uid.*需要大于0. |
测试了下 确实目前不支持超过2级的带*的多维数组验证场景 |
提交了一个改进版本 可以测试下 |
.*后缀判断之后需要在对规则做is_array/is_string判断,如果rule是sting类型则不需要再调用checkItem. |
拉去master后测试正常验证,但是提示依然不对.
|
关于提示需要修改此处Validate.php为可使提示符合预期
|
所属功能组件
验证器(Validate)
ThinkPHP 版本
8.1.2
操作系统
Centos
错误信息
真实业务代码测试
实际返回shop_goods.不能为空
预期返回shop_goods..measure.*.fit_merchant_uid不能为空
发生该问题在Validate.php:761处
throw new ValidateException($result, $name);
$result是shop_goods.不能为空,$name是measure..fit_merchant_uid
实际返回通过校验
预期返回shop_goods..measure..fit_merchant_uid必须大于0
其它说明
关于层级校验的代码执行逻辑实际上可以使用原有的单层级校验+递归的形式完成,现在的拆分实现反而增加了更多的不确定性.
另外关于TestUnit,Validate已经是一个独立模块,但是单元测试数据未覆盖所有规则,层级单一(无层级嵌套测试).
可以做一个全规则+嵌套(3层甚至更多)的测试样例进行全覆盖测试避免频繁出现与预期相悖的校验结果.
The text was updated successfully, but these errors were encountered: