2013-03-16 113 views
0

在Zend框架中,我使用的是$this->url()方法,它的工作方式就像一個魅力。但我有一個問題:該方法似乎將當前請求參數複製到新的URL。我希望它停止這樣做。從url()中的URL中移除參數?

舉例:我用$this->url('controller' => 'blog', 'action' => 'list');。如果當前頁面www.foo.bar/item/view/id/1id作爲一個參數,URL將變成:

www.foo.bar/blog/list/id/1 

你可以看到/id/1部分得以保持,而我指定它。

我該如何讓它停止這樣做?提前致謝。

+0

有類似這樣的另一個討論..可能會有所幫助:HTTP ://stackoverflow.com/questions/993725/removing-parameters-from-url-when-using-url-view-helper-links – 2013-03-16 19:45:32

回答

1

設置你不想要保留對任何null參數:

$this->url('controller' => 'blog', 'action' => 'list', 'id'=>null); 

編輯 還有一個辦法。事實上,所有的網址助手確實是具有通呼叫路由器:

public function url(array $urlOptions = array(), $name = null, $reset = false, $encode = true) 
     { 
      $router = Zend_Controller_Front::getInstance()->getRouter(); 
      return $router->assemble($urlOptions, $name, $reset, $encode); 
     } 

正如你所看到的,第三個參數(布爾值$復位)應該重置存儲在當前路徑的任何參數。假設你正在使用標準路由器(Zend_Controller_Router_Rewrite),調用將被傳遞給一個路由(可能是Zend_Controller_Router_Route的一些後裔),應該這樣解釋。當然,如果你使用自己的路線,你應該自己照顧這個。

+0

這是唯一的方法?在整個網站中可能會使用任何數量的參數。每次都要檢查它們會有點煩人。 – Neko 2013-03-16 19:31:34

+0

有一些開關(我不記得)清除了參數,但是如果你只需要刪除id,這種方式就更短了:-)我將添加一個編輯。 – fdreger 2013-03-16 19:38:52

+0

非常感謝。 :) – Neko 2013-03-16 19:43:27