Доброго всем времени суток.
Суть дела: в одном из модулей, назовем его "страницы сайта", используется дерево для хранения инфы о страницах - контент и прочее, ссылки на страницы хранятся в базе, при создании дочерней страницы её урл собирается из урла родительской страницы и того что ввел пользователь при создании. То есть ссылки типа /parent/child1/child2 и так далее. За вывод страниц отвечает один экщн, ссответственно встала проблема задания правила рутинга, изначально задал что-то типа этого:
'/<route:\w+>'=>'pages/pages/view',
'/<route:\w+>/<route1:\w+>'=>'pages/pages/view'
и так бы пришлось сделать для каждого уровня вложенности. Далеко не лучший вариант.
В регулярных выражениях разбираюсь крайне плохо, поэтому искал какой-то готовый вариант, по прошествии n-ного количества времени, отчаявшись, полез курить код CUrlManager’а, и оттуда позаимствовал такую вот конструкцию: (\w+):?.*? то есть правила выглядят так теперь:
'/<route:(\w+):?.*?>'=>'pages/pages/view',
'/'=>'pages/pages/view',
первое для рутинга по страницам, второе для рутинга на главную - урл корневой страницы такой "/". Один минус есть у такого подхода - невозможно воспользоваться методом createUrl, получаем: The requested URL /parent/child1/child2 was not found on this server, поэтому ссылки на страницы вставляю просто:
CHtml::link($title, $url)
Собственно вопрос - объясните кто-нибудь что эта регэкспа значит, и есть ли лучший вариант задания правила для подобного случая?