public function actionIndex() { $responseType = Yii::$app->request->get('type'); $returnData = []; switch ($responseType) { case "fetch": $returnData = Preferences::find()->select(['id', 'codes', 'name1', 'classmark', 'classmarkcn', 'status', 'created_at', 'updated_at'])->orderBy(['classmark' => SORT_ASC, 'codes' => SORT_ASC])->all(); return Json::encode($returnData); case "crud": $requestAction = Yii::$app->request->post('action'); switch ($requestAction) { case "create": $requestID = key(Yii::$app->request->post('data')); $requestData = Yii::$app->request->post('data')[$requestID]; $model = new Preferences(); //块赋值 $model->attributes = $requestData; //返回错误信息给datatable if (!$model->validate()) { $fieldErrors = []; foreach ($model->errors as $name => $status) { $fieldErrors[] = ['name' => $name, 'status' => Json::encode($status)]; } return Json::encode(['fieldErrors' => $fieldErrors, 'data' => []]); } if ($model->save()) { $requestData['id'] = $model->id; $requestData['created_at'] = $model->created_at; $requestData['updated_at'] = $model->updated_at; $data = []; $data[] = $requestData; return Json::encode(['data' => $data]); } else { $error = '新增操作发生意外!'; throw new Exception($error); } case "edit": $editID = array_keys(Yii::$app->request->post('data')); //执行事务,保存必须都成功了才行 $transaction = Preferences::getDb()->beginTransaction(); //返回值 $data = []; try { foreach ($editID as $requestID) { $requestData = Yii::$app->request->post('data')[$requestID]; $model = Preferences::findOne($requestID); //块赋值 $model->attributes = $requestData; //返回错误信息给datatable if (!$model->validate()) { $fieldErrors = []; foreach ($model->errors as $name => $status) { $fieldErrors[] = ['name' => $name, 'status' => Json::encode($status)]; } return Json::encode(['fieldErrors' => $fieldErrors, 'data' => []]); } $model->save(); //单个字段更新的时候 if (count($requestData) == 1 || !is_array($requestData)) { $requestData = Preferences::find()->select(['id', 'codes', 'name1', 'classmark', 'classmarkcn', 'status', 'created_at', 'updated_at'])->where(['id' => $requestID])->one(); } else { $requestData['id'] = $requestID; $requestData['created_at'] = $model->created_at; $requestData['updated_at'] = $model->updated_at; } $data[] = $requestData; } //提交事务 $transaction->commit(); return Json::encode(['data' => $data]); } catch (\Exception $e) { $transaction->rollBack(); throw $e; } case "remove": //多选则删除全部 用deleteAll()不会触发 event: EVENT_BEFORE_DELETE 和 EVENT_AFTER_DELETE foreach (Yii::$app->request->post('data') as $removeID => $removeData) { Preferences::findOne($removeID)->delete(); } return Json::encode($returnData); default: return Json::encode($returnData); } default: return $this->render('index'); } }
/** * (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; } }