From 3a62a495856f57b098aa4e4db2808c8a06454c19 Mon Sep 17 00:00:00 2001 From: thinkphp Date: Mon, 15 Feb 2016 12:46:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9B=E8=87=AA=E5=8A=A8=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=E7=9A=84=E8=A7=84=E5=88=99=E5=9C=BA=E6=99=AF=E5=AE=9A?= =?UTF-8?q?=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/think/Model.php | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/library/think/Model.php b/library/think/Model.php index ac1bf030..dd56392d 100644 --- a/library/think/Model.php +++ b/library/think/Model.php @@ -981,7 +981,12 @@ class Model // 全局字段规则 $this->rule = $validate['__pattern__']; } - $rules = $validate[$this->options['validate']]; + if (strpos($this->options['validate'], '.')) { + list($name, $group) = explode('.', $this->options['validate']); + } else { + $name = $this->options['validate']; + } + $rules = $validate[$name]; if (isset($validate['__all__'])) { $rules = array_merge($validate['__all__'], $rules); } @@ -995,9 +1000,19 @@ class Model } else { $options = []; } + if (isset($group) && isset($options['on'][$group])) { + // 如果设置了验证适用场景 + $scene = $options['on'][$group]; + if (is_string($scene)) { + $scene = explode(',', $scene); + } + } $options['value_validate'] = isset($options['value_validate']) ? $options['value_validate'] : []; $options['exists_validate'] = isset($options['exists_validate']) ? $options['exists_validate'] : []; foreach ($rules as $key => $val) { + if (isset($scene) && !in_array($key, $scene)) { + continue; + } $value = isset($data[$key]) ? $data[$key] : null; if (in_array($key, $options['value_validate']) && '' == $value) { continue;