diff --git a/library/think/Validate.php b/library/think/Validate.php index 718ed7a1..ca425496 100644 --- a/library/think/Validate.php +++ b/library/think/Validate.php @@ -456,11 +456,12 @@ class Validate * @access protected * @param mixed $value 字段值 * @param mixed $rule 验证规则 + * @param array $data 数据 * @return bool */ - protected function egt($value, $rule) + protected function egt($value, $rule, $data) { - return $value >= $rule; + return !is_null($this->getDataValue($data, $rule)) && $value >= $this->getDataValue($data, $rule); } /** @@ -468,11 +469,12 @@ class Validate * @access protected * @param mixed $value 字段值 * @param mixed $rule 验证规则 + * @param array $data 数据 * @return bool */ - protected function gt($value, $rule) + protected function gt($value, $rule, $data) { - return $value > $rule; + return !is_null($this->getDataValue($data, $rule)) && $value > $this->getDataValue($data, $rule); } /** @@ -480,11 +482,12 @@ class Validate * @access protected * @param mixed $value 字段值 * @param mixed $rule 验证规则 + * @param array $data 数据 * @return bool */ - protected function elt($value, $rule) + protected function elt($value, $rule, $data) { - return $value <= $rule; + return !is_null($this->getDataValue($data, $rule)) && $value <= $this->getDataValue($data, $rule); } /** @@ -492,11 +495,12 @@ class Validate * @access protected * @param mixed $value 字段值 * @param mixed $rule 验证规则 + * @param array $data 数据 * @return bool */ - protected function lt($value, $rule) + protected function lt($value, $rule, $data) { - return $value < $rule; + return !is_null($this->getDataValue($data, $rule)) && $value < $this->getDataValue($data, $rule); } /** @@ -1175,13 +1179,13 @@ class Validate public function getError() { return $this->error; - } - + } + /** * 获取数据值 * @access protected - * @param array $data 数据 - * @param string $key 数据标识 支持二维 + * @param array $data 数据 + * @param string $key 数据标识 支持二维 * @return mixed */ protected function getDataValue($data, $key) @@ -1189,11 +1193,11 @@ class Validate if (strpos($key, '.')) { // 支持二维数组验证 list($name1, $name2) = explode('.', $key); - $value = isset($data[$name1][$name2]) ? $data[$name1][$name2] : null; + $value = isset($data[$name1][$name2]) ? $data[$name1][$name2] : null; } else { - $value = isset($data[$key]) ? $data[$key] : null; + $value = is_numeric($key) ? $key : (isset($data[$key]) ? $data[$key] : null); } - return $value; + return $value; } /**