Symfony2路由注释获取url编码

时间:2014-07-07 16:01:40

标签: php symfony annotations twig

我正在使用Symfony2.5中的注释,我正在努力输出一个漂亮的干净网址:

.../display&type=foo&id=1

我一直得到的是:

.../display%26type=foo%26id=1

为什么Symfony2 url对此进行编码?

我的控制器看起来像这样:

/**
 * Displays content
 *
 * @Route("/display/type={type}&id={id}", name="content_display")
 * @Template(...)
 */
public function displayAction($type, $id = null) {
...
}

我的树枝模板有:

<a href="{{ path('content_display', {'type': type, 'id': entity.id}) }}">{{ entity.id }}. {{ entity.name }}</a><br />

所以我尝试添加|raw和autoescape off标签here。但到目前为止没有运气,任何想法?

谢谢!

1 个答案:

答案 0 :(得分:2)

/display/type={type}&id={id}

...不是有效的网址...您必须用?替换第二个斜杠:

/display?type={type}&id={id}

也就是说,该路由适用于路径替换 - 而不是参数替换。

我非常肯定,如果您将其更改为/display,当您尝试使用键值映射呈现网址时,Symfony会将这些作为参数添加,因为它可以&#39 ; t在路径中找到那些键。

编辑:

通过the documentation确认:

  

generate方法采用一个通配符数组来生成   URI。但是如果你传递额外的,它们将被添加到URI作为   查询字符串。