Я решил сделать страницы на сайте с произвольными URL.
Для этого в начале конфига urlManager вписал:
'<slug:[\w\/]+>' => 'page/page/show',
- все адреса направляются на page/page/show и в контроллере page устанавливается параметр slug.
Я поставил это правило в начале, но мне надо чтобы правило не срабатывало если страницы с данным slug нету. Так что я заменил его на
array('class' => 'application.modules.page.PageUrlRule',),
В этом классе, по мануалу, написал 2 метода. В parseUrl() сделал так, что если страница с запрошенным адресом есть то метод возвращает нужный роут и запускается контроллер для страниц. Все работает как надо, за исключением того что контроллеру не присваивается slug (как при простом правиле) и он поэтому не показывает страницу.
Как сделать чтобы slug присваивался?
Вносить изменения в контроллер не хочу. Думаю что при запросе той же страницы в контроллере она будет браться из кеша.