public function save() { $setting = Setting::findOne(['id' => $this->id]); if (empty($setting)) { $setting = new Setting(); $setting->name = $this->name; $setting->value = SettingForm::encodeValue($this->value); $oldRules = $this->_value_rules; $this->_value_rules = [[['value'], 'string']]; Yii::getLogger()->log('save:', YII_DEBUG); if ($setting->save()) { $this->_value_rules = $oldRules; $this->id = $setting->id; return $setting; } else { $this->_value_rules = $oldRules; Yii::getLogger()->log('save error', YII_DEBUG); } } else { $setting->name = $this->name; $setting->value = SettingForm::encodeValue($this->value); $oldRules = $this->_value_rules; $this->_value_rules = [[['value'], 'string']]; Yii::getLogger()->log('update:', YII_DEBUG); if ($setting->update()) { $this->_value_rules = $oldRules; return $setting; } else { $this->_value_rules = $oldRules; Yii::getLogger()->log('update error:' . print_r($setting, true), YII_DEBUG); } } return null; }