public function validateModelObject(Model $object, array &$data, $process = null, $isStrict = false) { $filter = $object->getFilter(); $shadow = []; $columns = $object->getColumns($process); // $groupColumns = $object->getGroupColumns(); if ($isStrict) { if ($process === Model::ON_UPDATE) { $shadow = $object->getShadowData(); } } foreach (array_keys($data) as $field) { $column = isset($columns[$field]) ? $columns[$field] : []; // 过滤值,同时必须更新$data $object[$field] = $data[$field] = $filter->filterColumn($data[$field], $column); $isRemove = false; if ($isStrict) { if (!empty($column['dummy'])) { $isRemove = true; } // if (!isset($groupColumns['default'][$field])) // $isRemove = true; if ($process === Model::ON_UPDATE) { if (isset($shadow[$field]) && equals($shadow[$field], $data[$field])) { $isRemove = true; } } } if ($isRemove) { unset($data[$field]); continue; } $error = $this->validateColumn($field, $data[$field], $column, $object, $process, $isStrict); if ($error !== false) { $object->setError($field, $error, false); // 不要覆盖已经存在的错误 } } return $this; }