CategoryController.php 2.28 KB
<?php
namespace common\modules\blog\controllers;

use common\models\Language;
use common\modules\blog\models\Article;
use common\modules\blog\models\ArticleCategory;
use common\modules\blog\models\ArticleCategoryLang;
use common\modules\blog\models\ArticleLang;
use yii\data\ActiveDataProvider;
use yii\web\Controller;

class CategoryController extends Controller
{
    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();
        $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();
            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);
            foreach($category_langs as $category_lang) {
                $category_lang->link('category', $category);
            }
            echo "ok";
        } else {
            return $this->render('create', [
                'category_langs' => $category_langs,
                'category' => $category,
                'langs' => $langs
            ]);
        }
    }
}