This commit is contained in:
2021-10-25 16:39:56 +08:00
parent 97c07dabeb
commit 5c30ffd40f
+15 -14
View File
@@ -150,33 +150,29 @@ class Validator extends BaseValidator
public function createRule($field, $rule, $model, $param) public function createRule($field, $rule, $model, $param)
{ {
$define = ['field' => $field]; $define = ['field' => $field];
foreach ($rule as $key => $val) {
if (!is_null($model)) { $is_model = is_null($model);
foreach ($rule as $key => $val) {
if (!$is_model) {
if (is_string($val) && method_exists($model, $val)) { if (is_string($val) && method_exists($model, $val)) {
$this->validators[] = [$model, $val]; $this->validators[] = [$model, $val];
continue; continue;
} }
} }
if (is_string($key)) { if (is_string($key)) {
$type = strtolower($key); $type = strtolower($key);
$define['value'] = $val; $define['value'] = $val;
} else { } else {
$type = strtolower($val); $type = strtolower($val);
} }
if (!isset($this->classMap[$type])) { if (!isset($this->classMap[$type])) {
continue; continue;
} }
$constr = array_merge($this->classMap[$type], $define); $constr = array_merge($this->classMap[$type], $define, [
'params' => $param,
/** @var BaseValidator $class */ 'model' => $model
$class = Kiri::createObject($constr); ]);
$class->setParams($param); $this->validators[] = $constr;
$class->setModel($model);
$this->validators[] = $class;
} }
} }
@@ -189,7 +185,6 @@ class Validator extends BaseValidator
if (count($this->validators) < 1) { if (count($this->validators) < 1) {
return true; return true;
} }
foreach ($this->validators as $val) { foreach ($this->validators as $val) {
if ($this->check($val)) { if ($this->check($val)) {
continue; continue;
@@ -215,7 +210,13 @@ class Validator extends BaseValidator
if (is_callable($val, true)) { if (is_callable($val, true)) {
return call_user_func($val, $this); return call_user_func($val, $this);
} }
return $val->trigger();
$class = Kiri::getDi()->get($val['class']);
unset($val['class']);
Kiri::configure($class, $val);
return $class->trigger();
} }
} }