/** * Валидация модели по указанному событию * * @param $event * @return bool */ protected function validateModel($event) { $isValid = true; /** * Валидация самой модели * Если текущая модель - наследник CFormModel, то, если не можем найти модель * для нее, смотрим модели объектов в публичных свойствах и валидируем их */ $modelsToValidate = array(); if (is_a($this, "CFormModel")) { $model = CCoreObjectsManager::getCoreModel($this); if (!is_null($model)) { $modelsToValidate[] = $this; } else { $publicVars = get_object_vars($this); foreach ($publicVars as $key => $value) { if (is_object($value)) { if (is_a($value, "CModel")) { $modelsToValidate[] = $value; } } } } } else { $modelsToValidate[] = $this; } foreach ($modelsToValidate as $model) { foreach (CCoreObjectsManager::getModelValidators($model)->getItems() as $validator) { if (!$validator->{$event}($model)) { $error = $validator->getError(); $this->getValidationErrors()->add($this->getValidationErrors()->getCount(), $error); $isValid = false; } } } return $isValid; }