Здравсвуйте.
Вопрос - у меня есть каталог товаров разных категорий.
Каждая из категорий различается и разными артрибутами, внешнтм видом и структурой страницы - т.е. я так понимаю - прийдется формировать вид для каждой отдельной категории и страницы товара этой категории.
В идеале я хочу получить такую структуру:
site.com/products - все категории
site.com/products/category1 - товары категории 1
site.com/products/category2 - товары категории 1
site.com/products/category1/product1 - товар1 категории 1
site.com/products/category1/product2 - товар2 категории 1
Как правильно раскидать это в контроллере (контроллерах):
Т.е. например запрос пришел на site.com/products/category1 - шлю на [catalog/index] (или например на [site/catalog]) а там делаю что-то типа такого?
$category_id = Category::find()->select('id')->one();
if ($category_id == 1) {
return $this->render('category1');
}
elseif ($category_id == 2){
return $this->render('category2');
}
......
В вид передаю уже нужный датаПровайдер и играюсь с страницей уже под конкретную категорию?
Ну тогда при запросе site.com/products/category1/product1 - шлю на [product/index] а там:
$category_id = Category::find()->select('id')->one();
if ($category_id == 1) {
return $this->render('product_category1');
}
elseif ($category_id == 2){
return $this->render('product_category2');
}
......
Но мне не нравится это решение - я уверен, что делаю ошибку. Есть еще какие-то варианты?
Помощь с контроллерами
-
- Сообщения: 35
- Зарегистрирован: 2018.12.24, 17:29
Re: Помощь с контроллерами
В упрощенном виде через числовые id в url
В urlrules добавьте
Экшн:
Выбор вью:
Вьюшки в файлах category_IDкатегории.php и product_IDкатегории.php
В urlrules добавьте
Код: Выделить всё
'/products/<category_id:\d+>/<product_id:\d+>' => 'poducts/index'
Код: Выделить всё
ProductsController::actionIndex($category_id = null, $product_id = null)
Код: Выделить всё
if ($category_id === null) return $this->render('index', [...]);
$category_id = (int)$category_id;
if ($product_id === null) {
return $this->render("category_{$category_id}", [...]);
}
return $this->render("product_{$category_id}", [...]);
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
-
- Сообщения: 35
- Зарегистрирован: 2018.12.24, 17:29
Re: Помощь с контроллерами
Но по сути - это мой же и подход - только id в url светится будут.
Значит - более изящного решения, видимо, нет.
В любом слючае - спс за отклик
ЗЫ.За дефолтное значение не подумал - спс
Значит - более изящного решения, видимо, нет.
В любом слючае - спс за отклик
ЗЫ.За дефолтное значение не подумал - спс