laravel或hyperf怎样写局部自定义验证方法?目前看到文档都是全局注册一个自定义规则类 然后在里面写自定义验证函数?
1. 运行环境
docker
1). 当前使用的 Laravel 版本?
laravel8 或 hyperf3
2). 当前使用的 php/php-fpm 版本?
PHP 版本:8.1
php-fpm 版本:8.1
3). 当前系统
macos
//: <> (期待数值 Windows 10 / Ubuntu 20.4 / CentOS 8 )
4). 业务环境
hyperf的mineAdmin框架
//: <> (期待信息 开发环境
或 生产环境
)
//: <> (是否使用负载均衡?请提供相关信息)
5). 相关软件版本
2. 问题描述?
我查到的hyperf自定义验证规则文档:https://www.hyperf.wiki/3.0/#/zh-cn/validation?id=%e8%87%aa%e5%ae%9a%e4%b9%89%e9%aa%8c%e8%af%81%e8%a7%84%e5%88%99
但是这样注册的方法是全局可用的,我不想这样。比如我只想当前类独有这个自定义验证规则方法?
hyperf和laravel的解决方案都可以。不知道的各位遇到这种需要自定义验证规则的时候 都是定义到全局吗?
我问过ChatGPT 没有给我很好的解决方案。比如拿到验证数据后 再次手动操作验证类去自定义规则。这不是一个好的解决方案。
第一次提问 如果描述的不清楚希望包含指出。我将持续改进 谢谢
3. 您期望得到的结果?
可以定义属于某个验证器类的 自定义验证方法
//: <> (能截图就截图。)
4. 您实际得到的结果?
必须全局注册定义 自定义验证规则方法
如果你在使用较新的 Laravel 版本,可以试一下上面 @没有哆啦A梦的大雄 提到的 闭包规则,这个规则在 ValidationRuleParser::prepareRule 里面进行了处理。
你只需要把 rules 方法里面的闭包稍微改造一下,就可以在 ruleDemo 方法里面像闭包规则那样验证了。
如果你使用 PHP 8.1+ ,rules 方法还可以这样写。