Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как устроен роутер Yii?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
etoYA
Отправлено: 08 Февраля, 2013 - 05:01:01
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


Помог: 21 раз(а)




Посмотре на Yii и что-то лень стало разбиратся, решил попробовать написать (роутер, даже незнаю роутер ли это CUrlManager) типа как у Yii.
Уж очень понравилось createUrl();
Когда начал писать

PHP:
скопировать код в буфер обмена
  1.  
  2. $router = new Router;
  3. $params = array(
  4.                         'route'         => 'controller/action',
  5.                         'params'        => 'arg1=1&arg2=2'
  6. );
  7. $router->createUrl($params);
  8.  


PHP:
скопировать код в буфер обмена
  1.  
  2. class Router{
  3.         private $routeVar = 'r';
  4.         private $urlSuffix = '.html';
  5.         private $apperand = '&';
  6.        
  7.         public function createUrl($params){
  8.                 list ($controller, $action) = explode('/', $params['route']);
  9.                 $url = 'index.php?' . $this->routeVar . '=' . $controller . '/' . $action;
  10.                 echo $url;
  11.         }
  12. }
  13.  


_http://site.com/index.php?r=controller/action&arg=1&arg=2
на выходе хотел получить такое.


не смог разобратся, как же мне получить $params['params'] в строку. Долго думал, ничего в голову так и не пришло, но потом опять задумался:

index.php->router->controller - ведь такая структура?
Но, если в Yii url создается в контроллере, то как же тогда он устроен? Или я что-то не понимаю?

(Отредактировано автором: 08 Февраля, 2013 - 05:08:33)

 
 Top
tato
Отправлено: 14 Февраля, 2013 - 03:06:08
Post Id



Посетитель


Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011  
Откуда: Владивосток


Помог: 8 раз(а)




createUrl - http://www[dot]yiiframework[dot]com/doc/[dot][dot][dot]createUrl-detail
Yii доки

Вообще непонял, что хочешь сделать. Если в Yii то:
PHP:
скопировать код в буфер обмена
  1.  
  2. Yii::app()->createUrl( 'post/view', array( 'id'=>23, 'somevar'=>'varvarvar' ) );
  3.  


т.е. post контроллер, view действие и параметры, на выходе будет:
/post/23?somevar=varvarvar

параметр id и имя действия "съел" UrlManager, если правило в конфиге убрать будет:
/post/view?id=23&somevar=varvarvar

(Отредактировано автором: 14 Февраля, 2013 - 03:17:27)



-----
просто ?: сложно
 
 Top
VitalKO
Отправлено: 17 Февраля, 2013 - 16:12:50
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




tato пишет:
Вообще непонял, что хочешь сделать.

Похоже ТС хочет сделать свой аналог createUrl.
etoYA, что-то Вы намудрили малость Улыбка. Зачем Вам разбирать route, если вы потом его обратно в таком же виже склеиваете? И params, Вы же его строкой передаете, что Вам мешает его прицепить к $url?Улыбка
 
 Top
etoYA
Отправлено: 17 Февраля, 2013 - 16:25:24
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


Помог: 21 раз(а)




VitalKO, нет, я не хочу делать такое, я хочу разобратся как это делается)
 
 Top
VitalKO
Отправлено: 17 Февраля, 2013 - 16:44:47
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




etoYA пишет:
VitalKO, нет, я не хочу делать такое, я хочу разобратся как это делается)

Тогда исходники Yii Вам в рукиУлыбка Там, по моему, CUrlManager этим занимается.

(Отредактировано автором: 17 Февраля, 2013 - 16:46:45)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB