Yii Framework Forum: Как решит проблему с некрасивыми urlами - Yii Framework Forum

Jump to content

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

Как решит проблему с некрасивыми urlами Rate Topic: -----

#1 User is offline   imreadyourmind 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 1
  • Joined: 01-September 12

Posted 01 September 2012 - 01:35 PM

Сразу прошу прощения. за пропущенные буквы(

Подскажите, куда копать, что почитать на тему создания своих urlов.
А то получается как то не приятно.

мне нужно получить url вида
домен/pay/а тут динамическая переменная к примеру хэш/
пример такой ссылки
mysite.ru/pay/12342/
mysite.ru/pay/12343/
mysite.ru/pay/12344/
и т.д.

Пытаюсь сделать хотя бы такого вида:
mysite.ru/pay/p/12344/
передавая в actionIndex переменную, вот так actionIndex($p), но yii расценивает p не как переменную, а как action и выдает ексепшн.

Получается только такого вида:
mysite.ru/pay/p/p/12344/
передавая в actionP переменную, вот так actionP($p) , но по моему такие ссылки - это совсем не красиво и не приемлемо( неужели в yii нет решения такой задачи?

Подскажите, какие нибудь расширения,плагнины,модули или может другие простые решения такой проблемы, что бы можно было получить первый вариант, ну на худой конец хотя бы второй.
0

#2 User is offline   Philipp Galichkin 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 5
  • Joined: 01-September 12
  • Location:London, UK

Posted 01 September 2012 - 04:26 PM

Начнем с того, что такое "pay"? папка на сервере (/public_html/pay), контроллер PayController, или ещё что?

Yii делает очень простой маппинг вида: ControllerName/ActionName/GetVariableName/GetVariableValue.

Скорее всего у вас какая-то кривая структура разделов сайта. Допустим, если у вас какие-нибудь заказы, то правильнее всего будет сделать так:

OrderController  extends Controller { 
    actionPay ( $orderNumber ) {
    
    }; 
}


Тогда и ссылка будет понятного вида: mysite.ru/order/pay/ordernumber/12344 (будет работать и mysite.ru/order/pay?ordernumber=12344

Почитать про маппинг в Йии можно тут http://www.yiiframew...1/en/topics.url
Да и вообще советую весь Definitive Guide прочитать - сразу куча вопросов отпадет. Он даже на русском есть.
0

#3 User is offline   ORey 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 1,700
  • Joined: 20-April 09
  • Location:Moscow, Russia

Posted 05 September 2012 - 02:37 PM

Вот такое правило прописать в конфиге:

'rules' => array(
    ....
    'pay/<id:\d+>' => 'pay/index',
    ....
),


После этого все запросы на /pay/12312313 отправятся контроллеру pay на экшн index, с установкой именованного параметра id.
Понятно, что имя параметра любое можно выбрать.
God is real unless declared as integer
0

#4 User is offline   Stanislav.K 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 1
  • Joined: 28-September 12

Posted 28 September 2012 - 02:55 AM

Можно также свои классы для роутинга писать rmcreative.ru/blog/post/svoi-klassy-dlja-pravil-routera-yii
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