2013-04-17 65 views
0

我說英語不好,很抱歉。Zend_Controller_Router_Route_Regex和分頁問題

該代碼。

routers.ini:

routes.cat1.type = "Zend_Controller_Router_Route_Regex" 
routes.cat1.route = "showcat/(\d+)-(\d+)" 
routes.cat1.defaults.module = "default" 
routes.cat1.defaults.controller = "category" 
routes.cat1.defaults.action = "viewcategory" 
routes.cat1.map.1 = "id1" 
routes.cat1.map.2 = "page" 
routes.cat1.reverse = "showcat/%d-%d" 

當我訪問:

showcat/6 

它會返回錯誤:無效的控制器指定(showcat)

但是,當我訪問:

showcat/6-1 

它工作正常。

當我添加以下的路由器來解決上述問題:

routes.cat2.type = "Zend_Controller_Router_Route_Regex" 
routes.cat2.route = "showcat/(\d+)" 
routes.cat2.defaults.module = "default" 
routes.cat2.defaults.controller = "category" 
routes.cat2.defaults.action = "viewcategory" 
routes.cat2.map.1 = "id1" 
routes.cat2.reverse = "showcat/%d" 

但分頁不工作。

任何人都可以幫我解決這個問題嗎?

謝謝!

回答

1

Firsrly,我會使用一個正斜槓,而不是一個破折號:

routes.cat2.route = "showcat/(\d+)/(\d+)"

但是,在這兩種情況下,你的正則表達式需要知道,如果第二條語句不存在,那麼:

routes.cat2.route = "showcat/(\d+)(?:/(\d+))?"

或者,用破折號:

routes.cat2.route = "showcat/(\d+)(?:-(\d+))?"

注意問號 - 表示物品是否在那裏。

記住要設置第二個參數的默認在您的路線:

routes.cat2.route.defaults.2 = 1

+0

謝謝你,我做了它的工作原理! –