findModel($category); /** * @var SeoComponent $seo * @var FilterHelper $filterHelper */ $seo = Yii::$app->get('seo'); $seo->setModel($model->lang); $filterHelper = \Yii::$app->get('filter'); $filterHelper->setFilter($filter); $query = $filterHelper->buildQuery() ->innerJoinWith('category', false) ->andWhere([ 'product_to_category.category_id' => $model->id ]) ->with('image', 'variants.image', 'lang'); $dataProvider = new ActiveDataProvider( [ 'query' => $query, 'pagination' => [ 'pageSize' => 18, ], ] ); return $this->render( 'view', [ 'model' => $model, 'dataProvider' => $dataProvider, ] ); } /** * Find category by ID * * @param $category * * @return \artbox\catalog\models\Category * @throws \yii\web\NotFoundHttpException */ protected function findModel($category) { /** * @var SeoComponent $seo */ $seo = Yii::$app->get('seo'); /** * @var FilterHelper $filter */ $filter = \Yii::$app->get('filter'); /** * @var Alias $alias */ $alias = Alias::find() ->where([ 'value' => $category ]) ->one(); if (empty($alias)) { throw new NotFoundHttpException('Category not found'); } $id = $filter->getIdFromRoute($alias->route); /** * @var Category $model */ $model = Category::findWithFilters($id) ->with('lang.alias') ->with('categories.lang') ->with( [ 'parent' => function ($query) { /** * @var ActiveQuery $query */ $query->with('lang', 'categories.lang'); }, ] ) ->one(); $seo->setAlias($model->lang->alias); if (!empty( $model )) { if ($model->lang->alias_id !== $seo->aliasId) { throw new NotFoundHttpException('Wrong language'); } return $model; } else { throw new NotFoundHttpException('Model not found'); } } }