改进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);
if (class_exists($class)) {
$validate = new $class;
} else {
throw new Exception('class [ ' . $class . ' ] not exists', 10001);
}
}
$_instance[$name . $layer] = $validate;

View File

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

View File

@@ -520,11 +520,14 @@ class Validate
* @access public
* @param mixed $value 字段值
* @param mixed $rule 验证规则
* @param mixed $param 参数
* @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);
}