From 71c1673708e0ce950c7ee253a22bca8c4d3e5eda Mon Sep 17 00:00:00 2001 From: yarik Date: Thu, 27 Apr 2017 15:43:59 +0300 Subject: [PATCH] Url manager fix --- frontend/config/main.php | 5 +++++ frontend/controllers/CategoryController.php | 24 ++++++++++++++++++------ frontend/views/category/view.php | 20 ++++++++++---------- frontend/views/layouts/_category_menu.php | 4 ++-- frontend/views/layouts/main.php | 8 ++++++-- frontend/views/product/view.php | 4 ++-- 6 files changed, 43 insertions(+), 22 deletions(-) diff --git a/frontend/config/main.php b/frontend/config/main.php index e9ad09b..ce4d0a4 100755 --- a/frontend/config/main.php +++ b/frontend/config/main.php @@ -59,6 +59,11 @@ 'route' => 'filter/index', 'defaults' => [ 'filter' => '' ], ], + [ + 'pattern' => 'category//', + 'route' => 'category/view', + 'defaults' => [ 'filter' => '' ], + ], 'robots.txt' => 'site/robots', ], ], diff --git a/frontend/controllers/CategoryController.php b/frontend/controllers/CategoryController.php index a2ce641..489c93f 100755 --- a/frontend/controllers/CategoryController.php +++ b/frontend/controllers/CategoryController.php @@ -4,6 +4,7 @@ use artbox\catalog\helpers\FilterHelper; use artbox\catalog\models\Category; use artbox\core\components\SeoComponent; + use artbox\core\models\Alias; use yii\data\ActiveDataProvider; use yii\db\ActiveQuery; use yii\web\Controller; @@ -20,15 +21,15 @@ /** * Show category by ID * - * @param int $id + * @param string $category * * @param string $filter * * @return string */ - public function actionView($id, $filter = '') + public function actionView($category, $filter = '') { - $model = $this->findModel($id); + $model = $this->findModel($category); /** * @var SeoComponent $seo * @var FilterHelper $filterHelper @@ -62,18 +63,29 @@ /** * Find category by ID * - * @param $id + * @param $category * - * @return Category + * @return \artbox\catalog\models\Category * @throws \yii\web\NotFoundHttpException */ - protected function findModel($id) + 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(); + $id = $filter->getIdFromRoute($alias->route); + /** * @var Category $model */ $model = Category::findWithFilters($id) diff --git a/frontend/views/category/view.php b/frontend/views/category/view.php index 96fc8c6..f72348b 100755 --- a/frontend/views/category/view.php +++ b/frontend/views/category/view.php @@ -115,8 +115,8 @@ _________________________________________________________ --> $brand->lang->title, [ '/category/view', - 'id' => $model->id, - 'filter' => $filterHelper->buildLink($brand), + 'category' => $model->lang->alias->value, + 'filter' => $filterHelper->buildLink($brand), ] ), [ @@ -151,8 +151,8 @@ _________________________________________________________ --> $option->lang->value, [ '/category/view', - 'id' => $model->id, - 'filter' => $filterHelper->buildLink($option), + 'category' => $model->lang->alias->value, + 'filter' => $filterHelper->buildLink($option), ] ), [ @@ -187,8 +187,8 @@ _________________________________________________________ --> $option->lang->value, [ '/category/view', - 'id' => $model->id, - 'filter' => $filterHelper->buildLink($option), + 'category' => $model->lang->alias->value, + 'filter' => $filterHelper->buildLink($option), ] ), [ @@ -223,8 +223,8 @@ _________________________________________________________ --> $option->lang->value, [ '/category/view', - 'id' => $model->id, - 'filter' => $filterHelper->buildLink($option), + 'category' => $model->lang->alias->value, + 'filter' => $filterHelper->buildLink($option), ] ), [ @@ -259,8 +259,8 @@ _________________________________________________________ --> $option->lang->value, [ '/category/view', - 'id' => $model->id, - 'filter' => $filterHelper->buildLink($option), + 'category' => $model->lang->alias->value, + 'filter' => $filterHelper->buildLink($option), ] ), [ diff --git a/frontend/views/layouts/_category_menu.php b/frontend/views/layouts/_category_menu.php index 8cc12c5..200a9a4 100644 --- a/frontend/views/layouts/_category_menu.php +++ b/frontend/views/layouts/_category_menu.php @@ -22,7 +22,7 @@ $category->lang->title, [ 'category/view', - 'id' => $category->id, + 'category' => $category->lang->alias->value, ], [ 'tabindex' => -1, @@ -39,7 +39,7 @@ $childCategory->lang->title, [ 'category/view', - 'id' => $childCategory->id, + 'category' => $childCategory->lang->alias->value, ] ) ); diff --git a/frontend/views/layouts/main.php b/frontend/views/layouts/main.php index cbfe1f5..25cfb9b 100755 --- a/frontend/views/layouts/main.php +++ b/frontend/views/layouts/main.php @@ -394,7 +394,11 @@ _________________________________________________________ -->
isset( $this->params[ 'breadcrumbs' ] ) ? $this->params[ 'breadcrumbs' ] : [], + 'links' => isset( $this->params[ 'breadcrumbs' ] ) ? $this->params[ 'breadcrumbs' ] : [], + 'homeLink' => [ + 'label' => \Yii::t('app', 'Home'), + 'url' => [ '/site/index' ], + ], ] ) ?>
@@ -402,7 +406,7 @@ _________________________________________________________ --> - + diff --git a/frontend/views/product/view.php b/frontend/views/product/view.php index 2da04f4..1189696 100755 --- a/frontend/views/product/view.php +++ b/frontend/views/product/view.php @@ -23,7 +23,7 @@ 'label' => $model->category->parent->lang->title, 'url' => [ '/category/view', - 'id' => $model->category->parent->id, + 'category' => $model->category->parent->lang->alias->value, ], ]; } @@ -31,7 +31,7 @@ 'label' => $model->category->lang->title, 'url' => [ '/category/view', - 'id' => $model->category->id, + 'category' => $model->category->lang->alias->value, ], ]; } -- libgit2 0.21.4