validate验证的一个错误,算不算bug啊,还是有其他的解决方法

浏览:574 发布日期:2016/05/16 分类:ThinkPHP5专区 关键字: 验证
/**
     * 数据自动验证
     * @access public
     * @param array $data  数据
     * @param mixed $rules  验证规则
     * @param string $scene 验证场景
     * @return bool
     */
    public function check(&$data, $rules = [], $scene = '')
    {
        $this->error = [];

        if (empty($rules)) {
            // 读取验证规则
            $rules = $this->rule;
        }
        // 分析验证规则
        $scene = $this->getScene($scene);
        foreach ($rules as $key => $item) {
            // field => rule1|rule2... field=>['rule1','rule2',...]
            if (is_numeric($key)) {
                // [field,rule1|rule2,msg1|msg2]
                $key  = $item[0];
                $rule = $item[1];
                if (isset($item[2])) {
                    $msg = is_string($item[2]) ? explode('|', $item[2]) : $item[2];
                } else {
                    $msg = [];
                }

            } else {
                $rule = $item;
                $msg  = [];
            }
加粗的这一段rules是不是默认当做二维数组处理?
如果是一维数组,就不会有结果了,例如这样
$validate = new Validate([
           'name','require|max:2','必须输入|字符串最大长度为2',
        ]);
        $data = [
            'name'=>'thinkphp',
        ];
        if(!$validate->check($data)){
            dump($validate->getError());
        }
补充:
// 获取数据 支持二维数组
$value = $this->getDataValue($data, $key);
这个$Key是不是应该改成$title才对呢?
最佳答案
评论( 相关
后面还有条评论,点击查看>>