2012-07-19 113 views
1

我想在我的網站上設置Zend分頁,以便我可以使用保羅愛爾蘭的jquery無限滾動插件,但我遇到了我的路線的麻煩。我現在有這些路線設置爲我的組織者頁:Zend框架多個路由爲相同的控制器

//Organizer searches 
    $route = new Zend_Controller_Router_Route('organizer/index/:filter/:page', 
               array('controller'=> 'organizer', 
               'action'=> 'index')); 
    $router->addRoute('organizer', $route); 
    $route = new Zend_Controller_Router_Route('organizer/index/:filter', 
               array('controller'=> 'organizer', 
               'action'=> 'index')); 
    $router->addRoute('organizer', $route); 

它正確地匹配organizer/index/popular順序,但如果我把一個頁碼上的過濾器突然出現空。如果我切換訂單,organizer/index/popular/2工作得很好,但organizer/index/popular不再有效。我只能使用更具體的路由,因爲這是我需要分頁的路線,但是我希望包含這兩者以適應試圖輸入url的用戶,或者如果我忘記更改我的代碼中某處的鏈接。我可以將多條路線與Zend合併到同一個控制器嗎?如果是這樣,我做錯了什麼?

回答

1

你需要給路由不同的名稱。你稱他們都是'組織者',所以第二個每次都會替換第一個。

你也容易地單路線做到這一點只需在頁面變量設置一個默認值:

$route = new Zend_Controller_Router_Route(
    'organizer/index/:filter/:page', 
    array(
     'controller'=> 'organizer', 
     'action'=> 'index', 
     'page' => 1 
    ) 
); 
$router->addRoute('organizer', $route); 
+0

我不知道我可以設置這樣的默認值。感謝您的額外信息! – jaimerump 2012-07-19 22:07:17

0

您添加到路由器必須有一個唯一的名稱,所以你要添加的第二路由必須有不同的名字,因爲你當前的代碼路徑每次你覆蓋的路線organizer。的$router->addRoute()第二個電話更改爲這樣的事情:

$router->addRoute('organizer2', $route);