Меню, иерархия категорий

Все что вы хотели знать об Yii, но боялись спросить

Модератор: core team

Roo
Новенький
Сообщения: 6
Зарегистрирован: Пт авг 31, 2012 3:33 pm

Сообщение Roo » Пт авг 31, 2012 3:46 pm

Всем привет!
Только начинаю осваивать Yii, пока многого не знаю.. так что прошу сильно не критиковать..

посмотрел urlManager, но не совсем понял, как можно организовать иерархию разделов,
например создаём каталог, в нём категорию, подкатегорию и т.п.:

(это всё для примера) Страна -> Регион -> Город -> Улица

Хотелось бы получить адрес такого типа: хттп://example.com/MyCategory/Russia/Center/SPB/Lenina
ну и если зайти не уровень выше - отображать список подкатегорий(т.е. все доступные улицы например).

Вот как в данном случае сделать обработку запросов(парсинг адреса, вызов нужного контроллера/действия) ?

И ещё хотелось бы узнать, как можно эту иерархию отобразить правильно, по идее компонентов куча уже есть на эту тему.. правда тема компонентов ещё тоже не раскрыта.

Если не сложно, хотелось бы как можно подробнее получить информацию.

Спасибо!!!
Последний раз редактировалось Roo Пт авг 31, 2012 3:50 pm, всего редактировалось 1 раз.

archaron
Новенький
Сообщения: 4
Зарегистрирован: Пт авг 31, 2012 4:04 pm

Сообщение archaron » Пт авг 31, 2012 4:09 pm

Привет!
Имеется наверное ввиду правило вида

'<category:w+>/<country:w+>/<region:w+>/<city:w+>/<street:w+>' => 'mycontroller/show'

при этом можно сделать в контроллере mycontroller

public function actionShow( $category, $country, $region, $city, $street)
{
// что-то тут отображаем исходя из переданных параметров
}

Roo
Новенький
Сообщения: 6
Зарегистрирован: Пт авг 31, 2012 3:33 pm

Сообщение Roo » Пт авг 31, 2012 4:34 pm

archaron писал(а):Привет!
Имеется наверное ввиду правило вида

'<category:w+>/<country:w+>/<region:w+>/<city:w+>/<street:w+>' => 'mycontroller/show'

при этом можно сделать в контроллере mycontroller

public function actionShow( $category, $country, $region, $city, $street)
{
// что-то тут отображаем исходя из переданных параметров
}


Да, вид примерно такой, но есть проблема - не известен уровень вложенности, подкатегорий.
Т.е. нужно универсальное правило что-ли.. и парсить руками эти категории...

Даже не знаю как лучше...
Возможно неудачный привел пример с иерархией, для ясности можно тогда рассмотреть вариант файловой системы..
Есть корень, и пошло поехало куча папок, а в каждой папке тоже может быть папка, а может и не быть...

Вот как бы это можно было бы обрабатывать ?

Аватара пользователя
xoma
Администратор
Сообщения: 1945
Зарегистрирован: Ср авг 22, 2012 8:54 am
Контактная информация:

Сообщение xoma » Пт авг 31, 2012 4:51 pm

Может стоит поиграться с обязательностью параметров?

public function actionShow( $category=null, $country=null, $region=null, $city=null, $street=null)
{
// что-то тут отображаем исходя из переданных параметров
}

А уже в методе контроллера это анализировать... ?
http://yupe.ru/subscribe - интересное от команды "Юпи!"

archaron
Новенький
Сообщения: 4
Зарегистрирован: Пт авг 31, 2012 4:04 pm

Сообщение archaron » Пт авг 31, 2012 9:39 pm

xoma писал(а):Может стоит поиграться с обязательностью параметров?

public function actionShow( $category=null, $country=null, $region=null, $city=null, $street=null)


Ага, именно так я где-то реализовывал. Просто проверяем какие части пути ( пришедшие как параметры ) указаны и в зависимости от этого выводим нужную иерархию.

Roo
Новенький
Сообщения: 6
Зарегистрирован: Пт авг 31, 2012 3:33 pm

Сообщение Roo » Сб сен 01, 2012 2:58 pm

А какое тогда правило сделать для urlManager ?
что-то типпа '<category:w+>/*' => 'myController/ParseCategory'

helldog
Гуру
Сообщения: 97
Зарегистрирован: Ср апр 03, 2013 10:16 am
Откуда: Москва

Сообщение helldog » Ср мар 05, 2014 3:04 pm

xoma писал(а):Может стоит поиграться с обязательностью параметров?

public function actionShow( $category=null, $country=null, $region=null, $city=null, $street=null)
{
// что-то тут отображаем исходя из переданных параметров
}

А уже в методе контроллера это анализировать... ?

Не хорошо. Могут быть одинаковые названия улицы региона или города, а также мы не знаем что нам за часть пришла в урле.
Я нашел только один единственный способ - это генерировать список урлов в отдельную таблицу, и подставлять их динамически в рулю, в случае нахождения. Если есть другие способы, прошу поделится =)


Вернуться в «Yii 1.x и Yii 2.x»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость