2012-12-16 33 views
0

工作我使用Zend Framework 1.12,並有這條路線:Zend公司網址查看助手無法與正則表達式路由

$router->addRoute('item_start', 
    new Zend_Controller_Router_Route_Regex(
      '(foo|bar|baz)', 
      array(
       'module'  => 'default', 
       'controller' => 'item', 
       'action'  => 'start' 
      ), 
      array(
       1 => 'area' 
      ), 
      '%s' 
     ) 
); 

問題是,當我稱之爲「/富」,並在視圖中使用的URL助手,它不給我任何參數:

$this->url(array("page"=>1)); 
// returns '/foo' (expected '/foo/page/1') 

$this->url(array("page"=>1), "item_start", true); 
// also returns '/foo' 

任何想法如何獲取頁面參數到URL?我不能像標準路線那樣使用通配符,不是嗎?

回答

1

除了大衛的建議,你可以改變這條路線使用標準的路由類,然後保持通配符選項:

$router->addRoute('item_start', 
    new Zend_Controller_Router_Route(
      ':area/*', 
      array(
       'module'  => 'default', 
       'controller' => 'item', 
       'action'  => 'start' 
      ), 
      array(
       'area' => '(foo|bar|baz)' 
      ) 
     ) 
); 

// in your view: 
echo $this->url(array('area' => 'foo', 'page' => 1), 'item_start'); 
+0

啊,完全忘了第三個參數,來限制這個值。我會用你的解決方案,似乎更靈活,謝謝! – Shocker

1

您的Regex路由沒有page參數,因此當url視圖助手最終以您提供的參數調用Route::assemble()時,它會忽略您的page值。

浮現在腦海中的兩個選擇是:

  1. 修改你的正則表達式包括(可能與默認值可選)page參數
  2. 管理查詢字符串路線之外page參數。
+0

第二點看起來不錯 – coolguy

+0

謝謝,1。可以得到相當複雜的,當我想要更多的參數,但2.是一個很好的解決方法,但需要一個新的Url助手。蒂姆的解決方案似乎是我最好的解決方案。 :)(對不起,我只能設置一個答案是「正確的」)。 – Shocker

+0

沒有汗水,很高興我們都能幫上忙。乾杯。 ;-) –