Symfony2 - 在routing.yml中使用查询进行路由

时间:2011-08-16 09:00:42

标签: symfony

我希望将变量添加到Symfony2中的路由的URL中,即

www.mysymfonyproject.com/blog/1?style=fresh&rpp=5 

文档讨论了如何使用查询生成网址,但据我所知,这是针对应用中的动态内容?:

$router->generate('blog', array('page' => 2, 'category' => 'Symfony'));
// /blog/2?category=Symfony

我想要的是:

_blogList:
pattern: /blog/{page}?{query}
defaults: { _controller: TestBundle:Blog:view ,page:1, query: NULL } 

但显然这不起作用。

可以使用YAML完成吗?或者我需要将config.yml切换到PHP?

感谢。

2 个答案:

答案 0 :(得分:3)

您可以通过执行以下操作来访问所有查询参数(不属于实际路由模式的参数):

$this->getRequest()->query->get('parameter_name')

在你的控制器的行动中匹配路线。

我有一些模糊的记忆,有一些快捷方式(如$ this-> getParameter()或$ this-> getQuery()),但我不确定,因为我找不到记录任何地方。

答案 1 :(得分:1)

你可以尝试这条路线(它应该有效):

blog:
    pattern: /blog/{page}
    defaults: { _controller: TestBundle:Blog:view ,page:1, style:fresh, rpp:5 } 

<小时/> 然后要生成类似/blog/1?style=fresh&rpp=5的网址,请使用:

$router->generate('blog', array('page' => 1, 'style' => 'fresh', 'rpp' => 5));

$router->generate('blog', array('page' => 1));