Пример #1
0
 /**
  * Валидация модели по указанному событию
  *
  * @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;
 }