request->get('category'); $filter = Yii::$app->request->get('filter', []); if (empty($category->category_id)) { throw new HttpException(404 ,'Page not found'); } if ($category->depth < 2) { return $this->render( 'categories', [ 'category' => $category ] ); } else { $params = []; if ( !empty($filter['brands']) ) { $brands = Brand::find()->select('brand_id')->where(['in', 'alias', $filter['brands']])->all(); $params['brands'] = []; foreach ($brands as $brand) { $params['brands'][] = $brand->brand_id; } } if ( !empty($filter['options']) ) { $params['options'] = $filter['options']; /*$optionQuery = TaxOption::find(); $optionQuery->select('tax_option_id'); $optionQuery->innerJoinWith('group'); foreach ($filter['options'] as $option_key => $option_values) { $optionQuery->orWhere([ 'tax_group_id' => $option_key, 'alias' => $filter['options'] ]); } $options = ->where(['in', 'alias', $filter['options']])->all(); $params['options'] = []; foreach ($options as $option) { $params['options'][] = $option->tax_option_id; }*/ } if ( !empty($filter['prices']) ) { $params['prices'] = $filter['prices']; } $productModel = new ProductFrontendSearch(); $productProvider = $productModel->search($category, $params); $brandModel = new BrandSearch(); $brandProvider = $brandModel->getBrands($category, $params); $optionsProvider = $productModel->optionsForCategory($category, $params); $groups = []; foreach ($optionsProvider->models as $option) { if (!isset($groups[$option->tax_group_id])) { $groups[$option->tax_group_id] = $option->taxGroup; $groups[$option->tax_group_id]->_options = []; } $groups[$option->tax_group_id]->_options[] = $option; } foreach($groups as $i => $group) { if (empty($group->_options)) unset($groups[$i]); } $priceLimits = $productModel->priceLimits($category, $params); return $this->render( 'products', [ 'category' => $category, 'brandModel' => $brandModel, 'brandProvider' => $brandProvider, 'filter' => $filter, 'productModel' => $productModel, 'productProvider' => $productProvider, 'optionsProvider' => $optionsProvider, 'groups' => $groups, 'priceLimits' => $priceLimits, ] ); } } public function actionProduct() { $product = Yii::$app->request->get('product'); $groups = []; foreach($product->category->getTaxGroups()->all() as $_group) { $groups[$_group->tax_group_id] = $_group; } foreach ($product->options as $option) { $groups[$option->tax_group_id]->_options[] = $option; } foreach($groups as $i => $group) { if (empty($group->_options)) unset($groups[$i]); } return $this->render('product', [ 'product' => $product, 'properties' => $groups, ]); } public function actionBrands() { return 'actionBrands'; } public function actionBrand($alias) { return 'actionBrand:'. $alias; } }