Вопрос по правилам в UrlManager

Допустим такой урл: index.php/param/param .

Какое правило написать, чтобы вызывался контроллер Page экшен show, а в $_GET ['name'] = '/param/param'.

Подскажите пожалуйста, как организовать систему, когда необходимо, например,

при вводе пользователем url index.php/about показывать страницу about из базы данных, а при при url index.php/about/send запускать контр. Site экшен send.

По первому пункту наверно так

'<param1:\w+>/<param2:\w+>'=>'page/show'

на счет второго вопроса -

'<page:\w+>'=>'site/show',

'<page:\w+>/send'=>'site/send'

блин тока писать начал :)

кстати как вы написали по поводу $_GET[name] врядли получиться из-за разделителя косой черты. т.е. можно только как две переменные name1, name2. или вместо /param/param в урле делать /param-param

Мне нужно сделать систему управления сайтом - в большинстве случаем просто древовидная структура страниц, поэтому от адресования в стиле контроллер/экшен я бы хотел уйти. Мне надо чтобы ссылки были вида /страница1/страница2/страница3. Где страница также выступает в роли раздела. Тем самым можно удалить часть ссылки, и переместиться в родительский раздел.

Я планирую сделать таблицу в базе данных, в которой хранится например контент страницы, и есть поле, например, url, в котором можно было бы писать

либо ссылки вида - http://www.kkk.ku, - тогда просто редирект, либо строку вида - контроллер/экшен, - тогда создается контроллер, и вызывается его экшн. Как вы считаете, правильно ли для решения такой задачи сделать производный от CUrlManager класс, и полностью переделать метод по разбору урла?

Алексей, тогда тебе придется сделать автоматическую генерацию маршрутов.

Ну, типа:

'about' => 'site/page',

'contacts' => 'site/page',

'projects' => 'site/page'

'projects/1' => 'site/page',

А в SiteController::actionPage() уже получать адрес через $_SERVER['REQUEST_URI']

можно конечно прописать чтобы все урлы шли в один экшен, а там уже тянулось из базы то что нужно

rosko, не очень понял тебя.

Я собираюсь сделать примерно такую таблицу Page:

id, parentId, name_eng, content, url.

То есть с помощью parentId у меня будет иерархия страниц. А поле name_eng будет как раз учавствовать в образовании адреса страницы. Единственное, что еще не продумал, это как сделать поиск страниц по name_eng, чтобы получилась по аналогии с файлами и каталогами в файловой системе.

Сделаю для всех контроллеров приложения свой базовый класс. А для генерации урлов я переопределю где надо методы createUrl.

В методе parseUrl буду разбирать request пользователя, в соответствии с таблицой Page либо вызывать PageController/actionShow передавая в $_GET id страницы, поле content которой нужно отобразить.

Если поле url будет не пустое, то создаем и вызываем например SiteController/actionIndex (короче в соответствии с информацие в поле url).

То есть, если информации о странице не будет в таблице Page, то увидеть ее никак нельзя будет. К тому же можно будет еще и сохранять номер текущей страницы, чтобы потом и в меню выделять текущий пункт, и т.д.

Я имел ввиду, что будет удобно сделать автоматическую генерацию правил для urlManager.

Чтобы набор правил составлялся на основе существующих страниц, а потом записывался в файл config/main.php.

Но может быть ты как-то удобнее придумаешь сделать.