以url为参数的Symfony 2路由

以url为参数的Symfony 2路由,url,symfony,routing,Url,Symfony,Routing,在Symfony2中尝试将Url作为参数传递时遇到了一些问题 My routing.yml有以下模式:pattern:mark/{date}/{url} 当我试图转到:/web/app_dev.php/mark/1307374717828/http%3A%2F%2folocalhost%2Fweb%2Fapp_dev.php%2Fhome%2F 我有一个找不到的页面,它看起来不像symfony,因为我没有“路由不匹配”的问题 那么如何将url作为参数传递呢?这并不像说pattern:mark/{

在Symfony2中尝试将Url作为参数传递时遇到了一些问题

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

当我试图转到:
/web/app_dev.php/mark/1307374717828/http%3A%2F%2folocalhost%2Fweb%2Fapp_dev.php%2Fhome%2F

我有一个找不到的页面,它看起来不像symfony,因为我没有“路由不匹配”的问题


那么如何将url作为参数传递呢?

这并不像说pattern:mark/{date}/{url}那样优雅地使用路由,但是您可以将“url”部分作为查询参数来查找

(在routing.yml中)

(在AcmeTestUrlBundle/Controllers/UrlController.php中)

现在您可以链接到
/web/app_dev.php/mark/1307374717828?url=http%3A%2F%2folocalhost%2Fweb%2Fapp_dev.php%2Fhome%2F

或使用树枝:

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

默认情况下,Symfony与字符“/”不匹配;您必须按照说明明确允许。

虽然此处的链接很有帮助,但最好也复制此处的相关部分。
public function markAction($date)
{
  $url = $this->get('request')->get('url');
  return new Response("sending you to $url");
}
{{ path('_testurlthing', { 'date': 1307374717828, 'url': 'http%3A%2F%2Flocalhost%2Fweb%2Fapp_dev.php%2Fhome%2F' }) }}