2014-07-07 36 views
0

我在Symfony2.5註釋玩弄和我奮力輸出一個乾淨的網址是這樣的:Symfony2的路由註釋獲取URL編碼

.../display&type=foo&id=1 

我總是得到的是:

.../display%26type=foo%26id=1 

爲什麼Symfony2 url會對此進行編碼?

我的控制器看起來是這樣的:

/** 
* Displays content 
* 
* @Route("/display/type={type}&id={id}", name="content_display") 
* @Template(...) 
*/ 
public function displayAction($type, $id = null) { 
... 
} 

我的樹枝模板有:

<a href="{{ path('content_display', {'type': type, 'id': entity.id}) }}">{{ entity.id }}. {{ entity.name }}</a><br /> 

所以我嘗試添加|raw和autoescape關閉標籤描述here。但到目前爲止沒有運氣,有什麼想法?

謝謝!

回答

2

/display/type={type}&id={id}

...是不是一個有效的網址...你不得不更換一個?是第二個斜槓:

/display?type={type}&id={id}

也就是說,該路由是爲路徑替換 - 不是參數替換。

我非常確定,如果您將其更改爲/display,那麼當您嘗試使用鍵值映射渲染URL時,Symfony會將這些參數添加爲參數,因爲它無法在路徑本身。

編輯:

確認經由the documentation

的生成方法採用通配符值的數組,以產生 URI。但是,如果您傳遞額外的內容,它們將作爲 查詢字符串添加到URI中。

+0

你是對的!但仍然得到這個:'/ display%3Ftype = foo%26id = 1',它仍然是url編碼。如果我完全刪除@Route註釋symfony2說沒有找到類型 – PingLu

+0

您的「通過文檔確認」部分是指在控制器內生成uri,而不是右鍵? – PingLu

+0

Symfony框架在代碼重用方面很重要,所以我認爲Twig'path()'調用可能與' - > generateUrl()'調用完全相同的方法調用。該文檔中的下一段指出,模板內部的URL生成「與以前一樣」,我認爲它也可以對在路徑中找不到的鍵進行參數替換。 –