_service = $service; } public function behaviors(): array { return [ 'access' => [ 'class' => AccessControl::class, 'rules' => [ [ 'actions' => ['list', 'disable', 'enable', 'delete'], 'allow' => true, 'roles' => ['ModuleManagement'], ], [ // all the action are accessible to admin 'allow' => true, 'roles' => ['admin'], ], ], ], 'verbs' => [ 'class' => VerbFilter::class, 'actions' => [ 'delete' => ['POST'], 'disable' => ['POST'], 'enable' => ['POST'], ], ], ]; } public function actionList() { $modules = \Yii::$app->moduleManager->getModules(); return $this->render('list', [ 'modules' => $modules, ]); } public function actionDelete($id) { $module = $this->findModel($id); $this->_service->delete($module); return $this->redirect(['module/list']); } public function actionDisable($id) { $module = $this->findModel($id); $this->_service->disable($module); return $this->redirect(['module/list']); } public function actionEnable($id) { $module = $this->findModel($id); $this->_service->enable($module); return $this->redirect(['module/list']); } protected function findModel($id): ModuleRecord { if (($model = ModuleRecord::findOne($id)) !== null) { return $model; } throw new NotFoundHttpException('The requested module does not exist.'); } }