GroupCategoryWidget.php 1.82 KB
<?php
    
    namespace artbox\catalog\widgets;
    
    use artbox\catalog\models\Category;
    use artbox\catalog\models\ProductOptionGroupExcl;
    use artbox\catalog\models\ProductOptionGroupExclToCategory;
    use yii\base\Widget;
    use yii\widgets\ActiveForm;
    
    /**
     * Class GroupCategoryWidget
     *
     * @package artbox\catalog\widgets
     */
    class GroupCategoryWidget extends Widget
    {
        /**
         * @var ActiveForm
         */
        public $form;
        
        /**
         * @var array
         */
        public $categoryIds;
        
        /**
         * @var Category[]
         */
        protected $allCategories;
        
        /**
         * @var ProductOptionGroupExclToCategory
         */
        protected $currentCategories = [];
    
        /**
         * @var ProductOptionGroupExcl
         */
        public $model;
        
        /**
         * @inheritdoc
         */
        public function init()
        {
            $this->allCategories = Category::find()
                                           ->with('lang')
                                           ->indexBy('id')
                                           ->all();
            $this->currentCategories = $this->model->getProductOptionGroupExclToCategories()
                                                   ->indexBy('category_id')
                                                   ->all();
        }
        
        /**
         * @inheritdoc
         */
        public function run()
        {
            return $this->render(
                '_group_category',
                [
                    'form'              => $this->form,
                    'categories'        => $this->allCategories,
                    'currentCategories' => $this->currentCategories,
                ]
            );
        }
    }