我已經使用正則表達式成功創建了我的路線。我的路由中有幾個可選參數,除非用戶指定了它們,否則我不想在URL Helper中顯示這些參數。我怎樣才能做到這一點?Zend_Controller_Router_Route_Regex具有反向的可選參數
這是我目前有
$route = new Zend_Controller_Router_Route_Regex(
'([a-zA-Z-_0-9-]+)-Widgets(?:/page/(\d+))?(?:/limit/(\d+))',
array(
'controller' => 'widget',
'action' => 'list',
),
array(
1 => 'color',
2 => 'page',
3 => 'limit'
),
'%s-Widgets/'
);
$router->addRoute('color_widgets', $route);
我然後調用URL助手用下面的代碼
echo $this->url(array('page' => $page), 'color_widgets', false);
這導致/藍色小工具/和頁面不會發送到URL 。我可以通過改變反向的路由器
$route = new Zend_Controller_Router_Route_Regex(
'([a-zA-Z-_0-9-]+)-Widgets(?:/page/(\d+))?(?:/limit/(\d+))',
array(
'controller' => 'widget',
'action' => 'list',
'page' => 1
),
array(
1 => 'color',
2 => 'page',
3 => 'limit'
),
'%s-Widgets/page/%d'
);
然而,這並沒有解決我的問題,解決這個問題說,我有一個網址
/藍色小工具/頁/ 1 /極限/ 10的限制沒有按「T秀,我又可以解決這個問題有以下
$route = new Zend_Controller_Router_Route_Regex(
'([a-zA-Z-_0-9-]+)-Widgets(?:/page/(\d+))?(?:/limit/(\d+))',
array(
'controller' => 'widget',
'action' => 'list',
'page' => 1,
'limit' => 10
),
array(
1 => 'color',
2 => 'page',
3 => 'limit'
),
'%s-Widgets/page/%d/limit/%d'
);
的問題,這是用戶在 /藍色小工具/我想帶他們到藍色小工具的下一個頁面下面的代碼
echo $this->url(array('page' => $page), 'color_widgets', false);
他們實際上採取 /藍小工具/頁/ 2 /極限/ 10
當我真的想帶他們到 /藍小工具/頁/ 2
哪有我用Zend Framework完成了這個任務。
謝謝我試圖避免必須編寫自定義路由。我會嘗試使用Router_Route。 – user1287238 2012-03-23 21:31:32