2011-06-06 51 views
3

嘗試在Symfony2中傳遞Url作爲參數時遇到一些麻煩。將url作爲參數的Symfony 2路由

我的routing.yml有以下模式:pattern: mark/{date}/{url}

當我試圖去:/web/app_dev.php/mark/1307374717828/http%3A%2F%2Flocalhost%2Fweb%2Fapp_dev.php%2Fhome%2F

我有一個頁面未找到,它似乎不看的symfony因爲我沒有「路線不匹配」的問題。

那麼如何傳遞一個url作爲參數?

回答

2

這不像使用路由能夠說明模式那麼優雅:mark/{date}/{url},但是您可以只查找'url'部分作爲查詢參數。

(在routing.yml中)

_testurlthing: 
    pattern: /mark/{date} 
    defaults: { _controller: AcmeTestUrlBundle:Url:mark } 

(在AcmeTestUrlBundle /控制器/ UrlController.php)

public function markAction($date) 
{ 
    $url = $this->get('request')->get('url'); 
    return new Response("sending you to $url"); 
} 

現在,您可以用樹枝鏈接到/web/app_dev.php/mark/1307374717828?url=http%3A%2F%2Flocalhost%2Fweb%2Fapp_dev.php%2Fhome%2F

或者:

{{ path('_testurlthing', { 'date': 1307374717828, 'url': 'http%3A%2F%2Flocalhost%2Fweb%2Fapp_dev.php%2Fhome%2F' }) }} 
0

默認情況下,Symfony與字符「/」不匹配;您必須按照here in the Symfony documentation的說明特別允許它。

+0

雖然這裏的鏈接很有幫助,但也可以在這裏複製相關部分。 [並非每個人都可以訪問外部網站,並且鏈接可能會隨時間而崩潰。](https://stackoverflow.com/help/how-to-ask) – 2017-11-29 02:49:48