/** * (string) actionRetrieve : 恢复记录 * @return string * @throws Exception */ public function actionRetrieve() { $oldPreferences = Yii::$app->request->post('oldPreferences'); $error = ''; $message = ''; foreach ($oldPreferences as $preferences) { $model = new Preferences(); //转化为[attr1 => val1, attr2 => val2, attr3 => val3, ..] 数据格式进行块赋值 $model->attributes = \yii\helpers\Json::decode($preferences); if ($model->save()) { $message .= "<li>系统配置参数<{$model->name1}({$model->codes})>恢复成功;</li>"; } else { $error = '恢复操作发生意外,错误信息:' . \yii\helpers\Json::encode($model->errors); throw new Exception($error); } } if ($error) { return Json::encode(['message' => $error, 'status' => 'failed']); } else { return Json::encode(['message' => $message, 'status' => 'success']); } }
/** * (void) set : 新增或修改指定classmark及codes对应的参数名 * @static * @param $classmark : 参数类型 * @param $codes : 参数编码 * @param $name1 : 参数名称 * @param string $classmarkcn : 中文参数类型 * @param integer $changemark : 参数修改标识,默认为1 * @param integer $status : 参数是否启用, 默认为启用(1) * @return bool * @throws \Exception * @throws \yii\db\Exception */ public static function set($classmark, $codes, $name1, $classmarkcn = '', $changemark = 1, $status = 1) { $trans = self::getDb()->beginTransaction(); try { $preferences = self::find()->where(['classmark' => $classmark, 'codes' => $codes])->one(); if ($preferences) { $preferences->name1 = $name1; } else { $preferences = new Preferences(); $preferences->codes = $codes; $preferences->name1 = $name1; $preferences->classmark = $classmark; $preferences->changemark = $changemark; $preferences->classmarkcn = $classmarkcn; //? $classmarkcn : $classmark; $preferences->status = $status; } if ($preferences->validate()) { $preferences->save(); $trans->commit(); return true; //$returnMsg = '参数类型>>>' . $classmarkcn . '-' . $classmark . '<<<新增或修改>>>'.$name1.'-'.$codes.'<<<成功!'; //Yii::$app->getSession()->setFlash('success',$returnMsg); } else { // 验证失败:$errors 是一个包含错误信息的数组 $trans->rollBack(); return false; //$errors = $preferences->errors; //Yii::$app->getSession()->setFlash('danger',\yii\helpers\Json::encode($errors)); } } catch (\Exception $e) { $trans->rollBack(); throw $e; } }