Symfony 2使用url作为参数进行路由

时间:2011-06-06 15:41:43

标签: url symfony routing

在Symfony2中尝试传递Url作为参数时,我遇到了一些麻烦。

我的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 个答案:

答案 0 :(得分:2)

使用路由并不像使用pattern:mark / {date} / {url}那样优雅,但你可以只查找'url'部分作为查询参数。

(在routing.yml中)

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

(在AcmeTestUrlBundle / Controllers / 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' }) }}

答案 1 :(得分:0)

默认情况下,Symfony与字符“/”不匹配;您必须按照here in the Symfony documentation所描述的具体允许它。