[ 'class' => VerbFilter::className(), 'actions' => [ 'delete' => ['post'] ] ] ]; } public function actionIndex() { $dataProvider = new ActiveDataProvider([ 'query' => ArticleCategory::find(), 'pagination' => [ 'pageSize' => 1, ], ]); return $this->render('index', ['dataProvider' => $dataProvider]); } public function actionCreate() { $category_langs = array(); $category = new ArticleCategory(); $images = array(); $images['full'] = new ArticleCategoryMedia(['scenario' => ArticleCategoryMedia::SCENARIO_FULL]); $images['preview'] = new ArticleCategoryMedia(['scenario' => ArticleCategoryMedia::SCENARIO_PREVIEW]); $images['additional'] = new ArticleCategoryMedia(['scenario' => ArticleCategoryMedia::SCENARIO_ADDITIONAL]); $category->loadDefaultValues(); $langs = Language::getActiveLanguages(); $default_lang = Language::getDefaultLang(); $isValid = false; foreach($images as $index => $value) { $images[$index]->type = $index; if($index == 'additional') { $images[$index]->imageFile = UploadedFile::getInstances($images[$index], "[{$index}]imageFile"); } else { $images[$index]->imageFile = UploadedFile::getInstance($images[$index], "[{$index}]imageFile"); } $isValid = $images[$index]->validate(['imageFile']) && $isValid; } if(!empty(\Yii::$app->request->post())) { $isValid = true; $category->load(\Yii::$app->request->post()); $isValid = $category->validate(); if(empty(\Yii::$app->request->post()['ArticleCategoryLang'])) { $category_langs[$default_lang->language_id] = new ArticleCategoryLang(); $isValid = ArticleCategoryLang::validateMultiple($category_langs) && $isValid; } else { foreach(\Yii::$app->request->post()['ArticleCategoryLang'] as $index => $category_lang) { $category_langs[$index] = new ArticleCategoryLang(); } ArticleCategoryLang::loadMultiple($category_langs, \Yii::$app->request->post()); $isValid = ArticleCategoryLang::validateMultiple($category_langs) && $isValid; } } else { $category_langs[$default_lang->language_id] = new ArticleCategoryLang(); } if($isValid) { $category->save(false); $first = 1; foreach($images as $index => $image) { $images[$index]->upload($category->id); } foreach($category_langs as $category_lang) { if($first) { $category_lang_clone = clone $category_lang; $category_lang_clone->lang_id = 0; $category_lang_clone->link('category', $category); unset($category_lang_clone); } $category_lang->link('category', $category); $first = 0; } echo "ok"; //$this->redirect('index'); } else { return $this->render('create', [ 'category_langs' => $category_langs, 'category' => $category, 'langs' => $langs, 'images' => $images ]); } } public function actionUpdate($id) { $category = ArticleCategory::findOne($id); $images = $category->getArticleCategoryMedia()->indexBy('type')->all(); if(!array_key_exists('full', $images)) { $images['full'] = new ArticleCategoryMedia(); } if(!array_key_exists('preview', $images)) { $images['preview'] = new ArticleCategoryMedia(); } foreach($images as $index => $image) { $images[$index]->scenario = $index; } $images['additional'] = array( 0 => new ArticleCategoryMedia(['scenario' => ArticleCategoryMedia::SCENARIO_ADDITIONAL]) ); $images['additional'] = array_merge($images['additional'], $category->getArticleCategoryMedia()->andWhere(['type' => 'additional'])->indexBy('id')->all()); foreach($images['additional'] as $index => $image) { $images['additional'][$index]->scenario = 'additional'; } $category_langs = $category->getArticleCategoryLangs()->where(['>=', 'lang_id', '1'])->indexBy('lang_id')->all(); $langs = Language::getActiveLanguages(); $default_lang = Language::getDefaultLang(); $isValid = false; if(!empty(\Yii::$app->request->post())) { $isValid = true; $category->load(\Yii::$app->request->post()); $isValid = $category->validate(); foreach($images as $index => $value) { if($index == 'additional') { $images[$index][0]->type = $index; $images[$index][0]->imageFile = UploadedFile::getInstances($images[$index][0], "[{$index}]imageFile"); $isValid = $images[$index][0]->validate(['imageFile']) && $isValid; } else { $images[$index]->type = $index; $images[$index]->imageFile = UploadedFile::getInstance($images[$index], "[{$index}]imageFile"); $isValid = $images[$index]->validate(['imageFile']) && $isValid; } } if(empty(\Yii::$app->request->post()['ArticleCategoryLang'])) { $isValid = ArticleCategoryLang::validateMultiple($category_langs) && $isValid; } else { foreach(\Yii::$app->request->post()['ArticleCategoryLang'] as $index => $category_lang) { if(!array_key_exists($index, $category_langs)) { $category_langs[$index] = new ArticleCategoryLang(); $category_langs[$index]->category_id = $category->id; } } ArticleCategoryLang::loadMultiple($category_langs, \Yii::$app->request->post()); $isValid = ArticleCategoryLang::validateMultiple($category_langs) && $isValid; } } if($isValid) { $category->save(false); foreach($images as $index => $image) { if($index == 'additional') { $images[$index][0]->upload($category->id); } else { if(!empty($images[$index]->imageFile)) { $images[$index]->replace($category->id, true); } } } foreach($category_langs as $category_lang) { $category_lang->save(false); } echo "ok"; //$this->redirect('index'); } else { return $this->render('update', [ 'category_langs' => $category_langs, 'category' => $category, 'langs' => $langs, 'images' => $images ]); } } public function actionDelete($id) { $this->findModel($id)->delete(); return $this->redirect(['index']); } protected function findModel($id) { if (($model = ArticleCategory::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } } }