[ 'class' => VerbFilter::className(), 'actions' => [ 'open' => ['post'], 'close' => ['post'], 'install' => ['post'], 'uninstall' => ['post'] ], ], ]; } public function actions() { return [ 'switcher' => SwitcherAction::className() ]; } /** * Lists all Module models. * @return mixed */ public function actionIndex() { $modules = Yii::$app->moduleManager->findAll(); $dataProvider = new ArrayDataProvider([ 'allModels' => $modules ]); return $this->render('index', [ 'dataProvider' => $dataProvider, ]); } // 安装 public function actionInstall() { $id = Yii::$app->request->post('id'); $module = Yii::$app->moduleManager->findOne($id); if(!Yii::$app->moduleManager->install($module)){ Yii::$app->session->setFlash('error', '安装失败'); } else { Yii::$app->session->setFlash('success', '安装成功'); } return $this->redirect(['index']); } //卸载 public function actionUninstall() { $id = Yii::$app->request->post('id'); $module = Yii::$app->moduleManager->findOne($id); if(!Yii::$app->moduleManager->uninstall($module)){ Yii::$app->session->setFlash('error', '卸载失败'); } else { Yii::$app->session->setFlash('success', '卸载成功'); } return $this->redirect(['index']); } // 开启 public function actionOpen() { $id = Yii::$app->request->post('id'); $module = Yii::$app->moduleManager->findOne($id); if(!$module->install){ Yii::$app->session->setFlash('error', '没安装'); } if(!Yii::$app->moduleManager->open($module)){ Yii::$app->session->setFlash('error', '打开失败'); } else { Yii::$app->session->setFlash('success', '打开成功'); } return $this->redirect(['index']); } // 关闭 public function actionClose() { $id = Yii::$app->request->post('id'); $module = Yii::$app->moduleManager->findOne($id); if(!$module->install){ Yii::$app->session->setFlash('error', '没安装'); } if(!Yii::$app->moduleManager->close($module)){ Yii::$app->session->setFlash('error', '关闭失败'); } else { Yii::$app->session->setFlash('success', '关闭成功'); } return $this->redirect(['index']); } // 配置 public function actionConfig($id) { $module = Yii::$app->moduleManager->findOne($id); if(!$module->install){ Yii::$app->session->setFlash('error', '插件没安装'); return $this->redirect(['index']); } $configs = Json::decode($module->getModel()->config); $configModels = []; if (!empty($configs)) { foreach ($configs as $k => $config) { $configModel = new ModuleConfig(); $configModel->scenario = 'init'; $configModel->attributes = $config; $configModels[$k] = $configModel; } } $model = $module->getModel(); if (\Yii::$app->request->isPost && Model::loadMultiple($configModels, \Yii::$app->request->post()) && Model::validateMultiple($configModels)) { $configs = Json::encode($configModels); $model->config = $configs; $model->save(); return $this->redirect(['index']); } return $this->render('config', [ 'model' => $model, 'configModels' => $configModels ]); } }