增加 default_validate 参数 用于设置默认的验证器名(用于controller和model的validate方法) 控制器类的validate方法增加callback参数在验证之前执行某个方法

This commit is contained in:
thinkphp
2016-03-21 14:31:48 +08:00
parent 27f3127fbb
commit 0583e4d2b6
3 changed files with 9 additions and 4 deletions

View File

@@ -52,6 +52,8 @@ return [
'default_controller' => 'Index',
// 默认操作名
'default_action' => 'index',
// 默认验证器
'default_validate' => '',
// 默认的空控制器名
'empty_controller' => 'Error',
// 操作方法后缀

View File

@@ -147,17 +147,20 @@ class Controller
* @param array $data 数据
* @param string|array $validate 验证器名或者验证规则数组
* @param array $message 提示信息
* @param mixed $callback 回调方法(闭包)
* @return void
*/
public function validate($data, $validate, $message = [])
public function validate($data, $validate, $message = [], $callback = null)
{
if (is_array($validate)) {
$v = Loader::validate();
$v = Loader::validate(Config::get('default_validate'));
$v->rule($validate);
} else {
$v = Loader::validate($validate);
}
if (is_callable($callback)) {
call_user_func_array($callback, [$v, &$data]);
}
if (is_array($message)) {
$v->message($message);
}

View File

@@ -989,7 +989,7 @@ class Model
if (!empty($this->options['validate'])) {
$info = $this->options['validate'];
if (is_array($info)) {
$validate = Loader::validate();
$validate = Loader::validate(Config::get('default_validate'));
$validate->rule($info['rule']);
$validate->message($info['msg']);
} else {