ThinkPHP6 修复复杂验证条件无效问题

修复ThinkPHP6复杂条件无效

验证无效背景

ThinkPHP6 修复复杂验证条件无效问题_第1张图片

// 多个字段验证唯一验证条件
'name'   => 'unique:user,status^account',
// 复杂验证条件:支持单个字段验证以及多个字段验证
'name'   => 'unique:user,status=1',
'name'   => 'unique:user,status=1&account='.$data['account'],

使用官网方法,验证错误显示

 'man_id|用户信息'=>'require|unique:man,status=1', 

ThinkPHP6 修复复杂验证条件无效问题_第2张图片

解决方案

路径F:\Project\WEB\catchAdmin\vendor\topthink\framework\src\think\Validate.php(CatchAdmin项目为例)

代码如下

elseif (strpos($key, '=')) {
     
            // 支持复杂验证条件
            $fields = explode('&', $key);
            $map_arr=[];
            foreach ($fields as $key) {
     
                $str_map=explode('=',$key);
                $map[] = [$str_map[0], '=',$str_map[1]];
                $map_arr[]=$str_map[0];
            }
            if(!in_array($field,$map_arr)){
     
                $map[]=[$field,'=',$data[$field]];
            }
        }

添加位置:1148行

ThinkPHP6 修复复杂验证条件无效问题_第3张图片

你可能感兴趣的:(ThinkPHP,Thinkphp6)