Есть таблица городов в б.д. в формате
city_id, city_name, city_slug
Городов очень много. Делаю доску объявлений. Хочу такую структуру URL:
site.ru/city/category
т.е. первый параметр - это city_slug.
Решил вопрос так:
'<city>/<category>/<page:\d+>' => 'main/index',
'<city>/<category>' => 'main/index',
'<city>' => 'main/index',
''=>'main/index',
Теперь первый параметр в URL считаем всегда городом. И приходится выше этого кода писать rule под абсолютно все остальные контроллеры/экшены
Есть такое решение:
<city:(moskva|spb|samara ... )>
но вписать сюда весь список городов ? Их несколько тыс. И они должны браться из бд.
В общем, смысл проблемы: нужно посмотреть первый параметр в URL, и поискать его в таблице (поле city_slug). Если таковой имеется - отправить запрос в соответствующий контроллер, если нет - игнорировать...