在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作为参数传递?
答案 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所描述的具体允许它。