Commit 71c1673708e0ce950c7ee253a22bca8c4d3e5eda
1 parent
44a8a989
Url manager fix
Showing
6 changed files
with
43 additions
and
22 deletions
Show diff stats
frontend/config/main.php
| ... | ... | @@ -59,6 +59,11 @@ |
| 59 | 59 | 'route' => 'filter/index', |
| 60 | 60 | 'defaults' => [ 'filter' => '' ], |
| 61 | 61 | ], |
| 62 | + [ | |
| 63 | + 'pattern' => 'category/<category>/<filter>', | |
| 64 | + 'route' => 'category/view', | |
| 65 | + 'defaults' => [ 'filter' => '' ], | |
| 66 | + ], | |
| 62 | 67 | 'robots.txt' => 'site/robots', |
| 63 | 68 | ], |
| 64 | 69 | ], | ... | ... |
frontend/controllers/CategoryController.php
| ... | ... | @@ -4,6 +4,7 @@ |
| 4 | 4 | use artbox\catalog\helpers\FilterHelper; |
| 5 | 5 | use artbox\catalog\models\Category; |
| 6 | 6 | use artbox\core\components\SeoComponent; |
| 7 | + use artbox\core\models\Alias; | |
| 7 | 8 | use yii\data\ActiveDataProvider; |
| 8 | 9 | use yii\db\ActiveQuery; |
| 9 | 10 | use yii\web\Controller; |
| ... | ... | @@ -20,15 +21,15 @@ |
| 20 | 21 | /** |
| 21 | 22 | * Show category by ID |
| 22 | 23 | * |
| 23 | - * @param int $id | |
| 24 | + * @param string $category | |
| 24 | 25 | * |
| 25 | 26 | * @param string $filter |
| 26 | 27 | * |
| 27 | 28 | * @return string |
| 28 | 29 | */ |
| 29 | - public function actionView($id, $filter = '') | |
| 30 | + public function actionView($category, $filter = '') | |
| 30 | 31 | { |
| 31 | - $model = $this->findModel($id); | |
| 32 | + $model = $this->findModel($category); | |
| 32 | 33 | /** |
| 33 | 34 | * @var SeoComponent $seo |
| 34 | 35 | * @var FilterHelper $filterHelper |
| ... | ... | @@ -62,18 +63,29 @@ |
| 62 | 63 | /** |
| 63 | 64 | * Find category by ID |
| 64 | 65 | * |
| 65 | - * @param $id | |
| 66 | + * @param $category | |
| 66 | 67 | * |
| 67 | - * @return Category | |
| 68 | + * @return \artbox\catalog\models\Category | |
| 68 | 69 | * @throws \yii\web\NotFoundHttpException |
| 69 | 70 | */ |
| 70 | - protected function findModel($id) | |
| 71 | + protected function findModel($category) | |
| 71 | 72 | { |
| 72 | 73 | /** |
| 73 | 74 | * @var SeoComponent $seo |
| 74 | 75 | */ |
| 75 | 76 | $seo = Yii::$app->get('seo'); |
| 76 | 77 | /** |
| 78 | + * @var FilterHelper $filter | |
| 79 | + */ | |
| 80 | + $filter = \Yii::$app->get('filter'); | |
| 81 | + /** | |
| 82 | + * @var Alias $alias | |
| 83 | + */ | |
| 84 | + $alias = Alias::find() | |
| 85 | + ->where([ 'value' => $category ]) | |
| 86 | + ->one(); | |
| 87 | + $id = $filter->getIdFromRoute($alias->route); | |
| 88 | + /** | |
| 77 | 89 | * @var Category $model |
| 78 | 90 | */ |
| 79 | 91 | $model = Category::findWithFilters($id) | ... | ... |
frontend/views/category/view.php
| ... | ... | @@ -115,8 +115,8 @@ _________________________________________________________ --> |
| 115 | 115 | $brand->lang->title, |
| 116 | 116 | [ |
| 117 | 117 | '/category/view', |
| 118 | - 'id' => $model->id, | |
| 119 | - 'filter' => $filterHelper->buildLink($brand), | |
| 118 | + 'category' => $model->lang->alias->value, | |
| 119 | + 'filter' => $filterHelper->buildLink($brand), | |
| 120 | 120 | ] |
| 121 | 121 | ), |
| 122 | 122 | [ |
| ... | ... | @@ -151,8 +151,8 @@ _________________________________________________________ --> |
| 151 | 151 | $option->lang->value, |
| 152 | 152 | [ |
| 153 | 153 | '/category/view', |
| 154 | - 'id' => $model->id, | |
| 155 | - 'filter' => $filterHelper->buildLink($option), | |
| 154 | + 'category' => $model->lang->alias->value, | |
| 155 | + 'filter' => $filterHelper->buildLink($option), | |
| 156 | 156 | ] |
| 157 | 157 | ), |
| 158 | 158 | [ |
| ... | ... | @@ -187,8 +187,8 @@ _________________________________________________________ --> |
| 187 | 187 | $option->lang->value, |
| 188 | 188 | [ |
| 189 | 189 | '/category/view', |
| 190 | - 'id' => $model->id, | |
| 191 | - 'filter' => $filterHelper->buildLink($option), | |
| 190 | + 'category' => $model->lang->alias->value, | |
| 191 | + 'filter' => $filterHelper->buildLink($option), | |
| 192 | 192 | ] |
| 193 | 193 | ), |
| 194 | 194 | [ |
| ... | ... | @@ -223,8 +223,8 @@ _________________________________________________________ --> |
| 223 | 223 | $option->lang->value, |
| 224 | 224 | [ |
| 225 | 225 | '/category/view', |
| 226 | - 'id' => $model->id, | |
| 227 | - 'filter' => $filterHelper->buildLink($option), | |
| 226 | + 'category' => $model->lang->alias->value, | |
| 227 | + 'filter' => $filterHelper->buildLink($option), | |
| 228 | 228 | ] |
| 229 | 229 | ), |
| 230 | 230 | [ |
| ... | ... | @@ -259,8 +259,8 @@ _________________________________________________________ --> |
| 259 | 259 | $option->lang->value, |
| 260 | 260 | [ |
| 261 | 261 | '/category/view', |
| 262 | - 'id' => $model->id, | |
| 263 | - 'filter' => $filterHelper->buildLink($option), | |
| 262 | + 'category' => $model->lang->alias->value, | |
| 263 | + 'filter' => $filterHelper->buildLink($option), | |
| 264 | 264 | ] |
| 265 | 265 | ), |
| 266 | 266 | [ | ... | ... |
frontend/views/layouts/_category_menu.php
| ... | ... | @@ -22,7 +22,7 @@ |
| 22 | 22 | $category->lang->title, |
| 23 | 23 | [ |
| 24 | 24 | 'category/view', |
| 25 | - 'id' => $category->id, | |
| 25 | + 'category' => $category->lang->alias->value, | |
| 26 | 26 | ], |
| 27 | 27 | [ |
| 28 | 28 | 'tabindex' => -1, |
| ... | ... | @@ -39,7 +39,7 @@ |
| 39 | 39 | $childCategory->lang->title, |
| 40 | 40 | [ |
| 41 | 41 | 'category/view', |
| 42 | - 'id' => $childCategory->id, | |
| 42 | + 'category' => $childCategory->lang->alias->value, | |
| 43 | 43 | ] |
| 44 | 44 | ) |
| 45 | 45 | ); | ... | ... |
frontend/views/layouts/main.php
| ... | ... | @@ -394,7 +394,11 @@ _________________________________________________________ --> |
| 394 | 394 | <div class="container"> |
| 395 | 395 | <?= Breadcrumbs::widget( |
| 396 | 396 | [ |
| 397 | - 'links' => isset( $this->params[ 'breadcrumbs' ] ) ? $this->params[ 'breadcrumbs' ] : [], | |
| 397 | + 'links' => isset( $this->params[ 'breadcrumbs' ] ) ? $this->params[ 'breadcrumbs' ] : [], | |
| 398 | + 'homeLink' => [ | |
| 399 | + 'label' => \Yii::t('app', 'Home'), | |
| 400 | + 'url' => [ '/site/index' ], | |
| 401 | + ], | |
| 398 | 402 | ] |
| 399 | 403 | ) ?> |
| 400 | 404 | </div> |
| ... | ... | @@ -402,7 +406,7 @@ _________________________________________________________ --> |
| 402 | 406 | <?php |
| 403 | 407 | } |
| 404 | 408 | ?> |
| 405 | - <!-- *** Breadcrumbs END *** --> | |
| 409 | + <!-- *** crumbs END *** --> | |
| 406 | 410 | |
| 407 | 411 | <?= $content ?> |
| 408 | 412 | ... | ... |
frontend/views/product/view.php
| ... | ... | @@ -23,7 +23,7 @@ |
| 23 | 23 | 'label' => $model->category->parent->lang->title, |
| 24 | 24 | 'url' => [ |
| 25 | 25 | '/category/view', |
| 26 | - 'id' => $model->category->parent->id, | |
| 26 | + 'category' => $model->category->parent->lang->alias->value, | |
| 27 | 27 | ], |
| 28 | 28 | ]; |
| 29 | 29 | } |
| ... | ... | @@ -31,7 +31,7 @@ |
| 31 | 31 | 'label' => $model->category->lang->title, |
| 32 | 32 | 'url' => [ |
| 33 | 33 | '/category/view', |
| 34 | - 'id' => $model->category->id, | |
| 34 | + 'category' => $model->category->lang->alias->value, | |
| 35 | 35 | ], |
| 36 | 36 | ]; |
| 37 | 37 | } | ... | ... |