改进model的validate方法

This commit is contained in:
thinkphp
2016-03-20 11:04:41 +08:00
parent c323f5e255
commit fa9eae4a26
3 changed files with 12 additions and 5 deletions

View File

@@ -376,6 +376,8 @@ class Loader
$class = str_replace('\\' . $module . '\\', '\\' . COMMON_MODULE . '\\', $class); $class = str_replace('\\' . $module . '\\', '\\' . COMMON_MODULE . '\\', $class);
if (class_exists($class)) { if (class_exists($class)) {
$validate = new $class; $validate = new $class;
} else {
throw new Exception('class [ ' . $class . ' ] not exists', 10001);
} }
} }
$_instance[$name . $layer] = $validate; $_instance[$name . $layer] = $validate;

View File

@@ -989,12 +989,14 @@ class Model
protected function dataValidate(&$data) protected function dataValidate(&$data)
{ {
if (!empty($this->options['validate'])) { if (!empty($this->options['validate'])) {
$info = $this->options['validate']; $info = $this->options['validate'];
$name = is_string($info) ? $info : $this->name;
$validate = Loader::validate($name);
if (is_array($info)) { if (is_array($info)) {
$validate = Loader::validate();
$validate->rule($info['rule']); $validate->rule($info['rule']);
$validate->message($info['msg']); $validate->message($info['msg']);
} else {
$name = is_string($info) ? $info : $this->name;
$validate = Loader::validate($name);
} }
if (!$validate->check($data)) { if (!$validate->check($data)) {
$this->error = $validate->getError(); $this->error = $validate->getError();

View File

@@ -520,11 +520,14 @@ class Validate
* @access public * @access public
* @param mixed $value 字段值 * @param mixed $value 字段值
* @param mixed $rule 验证规则 * @param mixed $rule 验证规则
* @param mixed $param 参数
* @return bool * @return bool
*/ */
public function filter($value, $rule, $param = null) public function filter($value, $rule)
{ {
if (is_string($rule)) {
$rule = explode(',', $rule);
}
list($rule, $param) = $rule;
return false !== filter_var($value, is_int($rule) ? $rule : filter_id($rule), $param); return false !== filter_var($value, is_int($rule) ? $rule : filter_id($rule), $param);
} }