Zend роутер вопрос

Я использую макет модулей для структурирования своих контроллеров:

:модуль/:контроллер/:действие

Я хотел бы добавить новый настраиваемый маршрут, чтобы следующий URL-адрес работал.

домен.com/имя пользователя

где username — имя пользователя любого зарегистрированного пользователя на сайте.

Может кто-то указать мне верное направление?

Спасибо


person iBiryukov    schedule 03.06.2011    source источник


Ответы (3)


См. этот пост в блоге для подробного объяснения того, как это сделать в ZF:

http://tfountain.co.uk/blog/2010/9/9/vanity-urls-zend-framework

person Tim Fountain    schedule 04.06.2011
comment
Спасибо. Это то, что я искал. - person iBiryukov; 05.06.2011

Не уверен, что вы можете сделать что-то вроде domain.com/username. Вместо этого вы можете сделать domain.com/u/username или domain.com/user/username. Например, чтобы сделать второй маршрут в вашем application.ini, вы можете поместить что-то вроде следующего:

resources.router.routes.user.route = "/user/:user"
resources.router.routes.user.type = "Zend_Controller_Router_Route" 
resources.router.routes.user.defaults.module = default
resources.router.routes.user.defaults.controller = user
resources.router.routes.user.defaults.action = user
resources.router.routes.user.defaults.user = 
resources.router.routes.user.reqs.user = "\s+" 
person Marcin    schedule 04.06.2011
comment
Не то чтобы вы НЕ МОЖЕТЕ сделать этот URL-адрес /username, но ваше предложение очень хорошее. Наличие общих URL-адресов без какого-либо ключевого слова является плохой практикой, потому что в конечном итоге у вас будет какое-то связующее действие, которое будет иметь больше логики, чтобы определить, предназначен ли URL-адрес для имени пользователя, страницы или чего-то еще. Всегда лучше иметь ключевое слово в вашем URL. - person Tomáš Fejfar; 04.06.2011
comment
››Всегда лучше иметь ключевое слово в URL. Это действительно лучше с точки зрения разработчика. Однако, с точки зрения пользователя, гораздо приятнее иметь понятный URL-адрес своей страницы. @marcin Я знаю, как справляться со стандартными случаями. Мой вопрос был именно о нестандартном. - person iBiryukov; 05.06.2011

http://framework.zend.com/manual/en/zend.controller.router.html достаточно хорошо описывает все различные способы добавления маршрутов. Имейте в виду, что после того, как вы добавите пользовательские маршруты, маршрут по умолчанию больше не будет работать, если вы не укажете его явно (а также в помощниках просмотра URL-адресов и т. д.).

person Niklas    schedule 03.06.2011
comment
Я ценю усилия. Но нет необходимости цитировать документацию. Я прочитал это. Мой вопрос был о необычном случае в обработке маршрута. - person iBiryukov; 05.06.2011