[ 'class' => AccessControl::class, 'rules' => [ [ 'allow' => true, 'roles' => ['@'], 'matchCallback' => function ($rule, $action) { return $this->getUserModule() ->getAuthorizationChecker() ->isGrantedAsProducer($this->getUserCurrent()); } ], ], ], ]; } /** * Liste les catégories. */ public function actionIndex() { $searchModel = new ProductCategorySearch(); $dataProvider = $searchModel->search(\Yii::$app->request->queryParams); return $this->render('index', [ 'searchModel' => $searchModel, 'dataProvider' => $dataProvider, ]); } /** * Crée une catégorie. */ public function actionCreate() { $productCategoryModule = $this->getProductCategoryModule(); $productCategory = $productCategoryModule->instanciateProductCategory(); $productCategory->id_producer = GlobalParam::getCurrentProducerId(); if ($productCategory->load(\Yii::$app->request->post()) && $productCategoryModule->saveCreate($productCategory)) { $this->setFlash('success', "Catégorie ajoutée."); return $this->redirect(['index']); } else { return $this->render('create', [ 'model' => $productCategory, ]); } } /** * Modifie une catégorie. */ public function actionUpdate(int $id) { $productCategoryModule = $this->getProductCategoryModule(); $productCategory = $this->findModel($id); if ($productCategory->load(\Yii::$app->request->post()) && $productCategoryModule->saveUpdate($productCategory)) { $this->setFlash('success', "Catégorie modifiée."); return $this->redirect(['index']); } else { return $this->render('update', [ 'model' => $productCategory, ]); } } /** * Supprime une catégorie. */ public function actionDelete($id) { $productCategoryModule = $this->getProductCategoryModule(); $productCategory = $this->findModel($id); $productCategoryModule->delete($productCategory); Product::updateAll(['id_product_category' => null], ['id_product_category' => $id]); $this->setFlash('success', 'Catégorie ' . Html::encode($productCategory->name) . ' supprimée.'); return $this->redirect(['index']); } /** * Modifie l'ordre des catégories. */ public function actionPosition() { $array = Yii::$app->request->post('array'); $positionArray = json_decode(stripslashes($array)); foreach ($positionArray as $id => $position) { $category = $this->findModel($id); $category->position = $position; $category->save(); } } /** * Recherche une catégorie en fonction de son ID. */ protected function findModel($id) { $productCategoryModule = $this->getProductCategoryModule(); if (($productCategory = $productCategoryModule->findOneProductCategoryById($id)) !== null) { return $productCategory; } else { throw new NotFoundHttpException('The requested page does not exist.'); } } }