Yii Framework Forum: Вопрос по правилам в UrlManager - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Вопрос по правилам в UrlManager Rate Topic: -----

#1 User is offline   Алексей 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 28
  • Joined: 21-June 09
  • Location:Россия Ижевск

Posted 09 July 2009 - 01:42 AM

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

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

#2 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

Posted 09 July 2009 - 04:18 AM

По первому пункту наверно так
'<param1:\w+>/<param2:\w+>'=>'page/show'

на счет второго вопроса -
'<page:\w+>'=>'site/show',
'<page:\w+>/send'=>'site/send'
0

#3 User is offline   Zolter 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 377
  • Joined: 26-March 09

Posted 09 July 2009 - 04:21 AM

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

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

#4 User is offline   Алексей 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 28
  • Joined: 21-June 09
  • Location:Россия Ижевск

Posted 09 July 2009 - 05:22 AM

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

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

#5 User is offline   rosko 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 211
  • Joined: 04-January 09
  • Location:Kiev, Ukraine

Posted 09 July 2009 - 05:29 AM

Алексей, тогда тебе придется сделать автоматическую генерацию маршрутов.
Ну, типа:
'about' => 'site/page',
'contacts' => 'site/page',
'projects' => 'site/page'
'projects/1' => 'site/page',

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

#6 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

Posted 09 July 2009 - 05:32 AM

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

#7 User is offline   Алексей 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 28
  • Joined: 21-June 09
  • Location:Россия Ижевск

Posted 09 July 2009 - 06:08 AM

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, то увидеть ее никак нельзя будет. К тому же можно будет еще и сохранять номер текущей страницы, чтобы потом и в меню выделять текущий пункт, и т.д.

0

#8 User is offline   rosko 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 211
  • Joined: 04-January 09
  • Location:Kiev, Ukraine

Posted 09 July 2009 - 06:52 AM

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

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

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users