2009-12-14 3 views
0

Я установил свои маршруты в своем файле application.ini, который работает для всех тех, которые у меня установлены. Проблема в том, что в этом контроллере есть несколько действий, и я пытаюсь использовать маршруты в других действиях.Zendframework Routing Issue

Например я создал следующий в моем application.ini для подкачки и столбца сортировки

resources.router.routes.search.route = "search/:page/:col/:sort/:limit/" 
resources.router.routes.search.defaults.controller = search 
resources.router.routes.search.defaults.page = 1 
resources.router.routes.search.defaults.col = time 
resources.router.routes.search.defaults.sort = default 
resources.router.routes.search.defaults.limit = 50 
resources.router.routes.search.reqs.page = \d+ 
resources.router.routes.search.reqs.col = \w+ 
resources.router.routes.search.reqs.sort = \w+ 
resources.router.routes.search.reqs.limit = \d+ 

Вышеуказанные работы, когда я на действия по умолчанию этой страницы, как

www.mywebsite.com/search/2/ 

Возглавит вторую страницу результатов. Но если я попробую то же самое по другому действию,

www.mywebsite.com/search/action/2 

Он просто показывает пустую страницу. Я попытался создать свои собственные настройки в ini, и это не сработало. Раньше я сталкивался с этой проблемой, но обычно просто отдавал и разделял вещи на разные контроллеры, но я предпочел бы иметь разные действия.

Любая помощь будет высоко оценена.

Matt

ответ

0

search/:page/:col/:sort/:limit/ не соответствует www.mywebsite.com/search/action/2. Ваш маршрут ищет search/, за которым следует цифра (\d), которая представляет номер страницы; однако вы запрашиваете search/, за которым следует строка action. Я бы предложил добавить еще один параметр на ваш маршрут: search/:action/:page/:col/:sort/:limit, по умолчанию action - index.

Запрос первой страницы действия по умолчанию остается неизменным (search). Запрос страницы 2 маршрута по умолчанию теперь будет search/index/2/, но теперь вы можете указать другое действие (search/action/2).

+0

Спасибо для вас вход, я на самом деле пробовал уже, но в конечном итоге с теми же результатами. Самое забавное, что я снова выполняю поиск, он будет по умолчанию для этой второй страницы, но когда параметры URL будут там, страница не будет загружаться. Я почти в такой момент, когда я собираюсь отделить его от своего собственного контроллера. Единственная другая маршрутизация у меня похожа, но для другого контроллера. Будет ли лучший способ реализовать пейджинг по всем контроллерам и действиям? –

+0

Ниже я недавно попытался основать другое сообщение, которое я нашел, но он все еще не работает. Самое странное, что если я нахожу поиск на этой странице, тогда нажмите на пейджинг, он выглядит пустым, но если я снова ищу его, он по умолчанию будет на странице два, потому что он может читать параметры в браузере, просто по какой-то причине страница , Я добавлю другую часть моего приложения.ini ниже этого комментария, так как у меня заканчивается номер в этом комментарии –

+0

resources.router.routes.searchadvanced.route = "search/advanced /: page /: limit /" resources.router.routes.searchadvanced.defaults.controller = search resources.router.routes.searchadvanced.defaults.action = advanced resources.router.routes.searchadvanced.defaults.страница = 1 resources.router.routes.searchadvanced.defaults.limit = 25 resources.router.routes.searchadvanced.reqs.page = \ D + resources.router.routes.searchadvanced.reqs.limit = \ D + сообщение, которое дало мне эту идею http://stackoverflow.com/questions/1850558/php-zend-route-config-ini-similar-patterns –

0

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

Для тех, кто считает, что они столкнулись с подобными проблемами, как это, они могут найти эту ссылку очень полезной.

link text