Think/Model.php
protected function autoValidation(array $data, $type)
    {
        if (isset($this->options['validate']) && false === $this->options['validate']) {
            // 关闭自动验证
            return true;
        }
        if (!empty($this->options['validate'])) {
            $_validate = $this->options['validate'];
            unset($this->options['validate']);
        } elseif (!empty($this->_validate)) {
            $_validate = $this->_validate;
        }
        // 属性验证
        // 如果设置了数据自动验证则进行数据验证
        if (isset($_validate)) {
            if ($this->patchValidate) {
                // 重置验证错误信息
                $this->error = [];
            }
            foreach ($_validate as $val) {
                // 验证因子定义格式
                // array(field,rule,message,condition,type,when,params)
                // 判断是否需要执行验证
                if (empty($val[5]) || ($val[5] == static::MODEL_BOTH && $type < 3) || $val[5] == $type) {
                    if (0 == strpos($val[2], '{%') && strpos($val[2], '}')) {
                        // 支持提示信息的多语言 使用 {%语言定义} 方式
                        $val[2] = L(substr($val[2], 2, -1));
                    }
                    $val[3] = isset($val[3]) ? $val[3] : static::EXISTS_VALIDATE;
                    $val[4] = isset($val[4]) ? $val[4] : 'regex';
                    // 判断验证条件
                    switch ($val[3]) {
                        // 必须验证 不管表单是否有设置该字段
                        case static::MUST_VALIDATE:
                            if (false === $this->_validationField($data, $val)) {
                                return false;
                            }
                            break;
                        // 值不为空的时候才验证
                        case static::VALUE_VALIDATE:
                            if ('' != trim($data[$val[0]])) {
                                if (false === $this->_validationField($data, $val)) {
                                    return false;
                                }
                            }
                            break;
                        // 默认表单存在该字段就验证
                        default:
                            if (isset($data[$val[0]])) {
                                if (false === $this->_validationField($data, $val)) {
                                    return false;
                                }
                            }
                    }
                }
            }
            // 批量验证的时候最后返回错误
            if (!empty($this->error)) {
                return false;
            }
        }

        return true;
    }
protected function autoValidation(array $data, $type)
    {
        if (isset($this->options['validate']) && false === $this->options['validate']) {
            // 关闭自动验证
            return true;
        }
        if (!empty($this->options['validate'])) {
            $_validate = $this->options['validate'];
            unset($this->options['validate']);
        } elseif (!empty($this->_validate)) {
            $_validate = $this->_validate;
        }
        // 属性验证
        // 如果设置了数据自动验证则进行数据验证
        if (isset($_validate)) {
            if ($this->patchValidate) {
                // 重置验证错误信息
                $this->error = [];
            }
            foreach ($_validate as $val) {
                // 验证因子定义格式
                // array(field,rule,message,condition,type,when,params)
                // 判断是否需要执行验证
                if (empty($val[5]) || ($val[5] == static::MODEL_BOTH && $type < 3) || $val[5] == $type) {
                    if (0 == strpos($val[2], '{%') && strpos($val[2], '}')) {
                        // 支持提示信息的多语言 使用 {%语言定义} 方式
                        $val[2] = L(substr($val[2], 2, -1));
                    }
                    $val[3] = isset($val[3]) ? $val[3] : static::EXISTS_VALIDATE;
                    $val[4] = isset($val[4]) ? $val[4] : 'regex';
                    // 判断验证条件
                    switch ($val[3]) {
                        // 必须验证 不管表单是否有设置该字段
                        case static::MUST_VALIDATE:
                            if (false === $this->_validationField($data, $val)) {
                                return false;
                            }
                            break;
                        // 值不为空的时候才验证
                        case static::VALUE_VALIDATE:
                            if ('' != trim($data[$val[0]])) {
                                if (false === $this->_validationField($data, $val)) {
                                    return false;
                                }
                            }
                            break;
                        // 默认表单存在该字段就验证
                        default:
                            if (isset($data[$val[0]])) {
                                if (false === $this->_validationField($data, $val)) {
                                    return false;
                                }
                            }
                    }
                }
            }
            // 批量验证的时候最后返回错误
            if (!empty($this->error)) {
                return false;
            }
        }

        return true;
    }
自动表单验证
@param array $data 创建数据
@param string $type 创建类型
@return bool
@throws BaseException