diff --git a/library/think/Controller.php b/library/think/Controller.php index 9ab859e1..cd60e4be 100644 --- a/library/think/Controller.php +++ b/library/think/Controller.php @@ -156,15 +156,24 @@ class Controller $v = Loader::validate(Config::get('default_validate')); $v->rule($validate); } else { + if (strpos($validate, '.')) { + // 支持场景 + list($validate, $scene) = explode('.', $validate); + } $v = Loader::validate($validate); + if (!empty($scene)) { + $v->scene($scene); + } } - if (is_callable($callback)) { - call_user_func_array($callback, [$v, &$data]); - } + if (is_array($message)) { $v->message($message); } + if (is_callable($callback)) { + call_user_func_array($callback, [$v, &$data]); + } + if (!$v->check($data)) { return $v->getError(); } else { diff --git a/library/think/Model.php b/library/think/Model.php index 65b03af0..72e4fe53 100644 --- a/library/think/Model.php +++ b/library/think/Model.php @@ -993,8 +993,14 @@ class Model $validate->rule($info['rule']); $validate->message($info['msg']); } else { - $name = is_string($info) ? $info : $this->name; + $name = is_string($info) ? $info : $this->name; + if (strpos($name, '.')) { + list($name, $scene) = explode('.', $name); + } $validate = Loader::validate($name); + if (!empty($scene)) { + $validate->scene($scene); + } } if (!$validate->check($data)) { $this->error = $validate->getError();