我想在Twig视图中使用Symfony 3中的当前路由。
我已经做了一些研究,但我没有找到任何解决方案。我在Twig视图中尝试以下内容:
{{ app.request.uri }}
返回类似于:http://localhost:8000/_fragment?_path=_format%3Dhtml%26_locale%3Dfr%26_controller%3DFOSUserBundle%253ASecurity%253Alogin
{{ app.request.get('_route') }}
始终返回NULL。
{{ app.request.getpathinfo }}
始终拥有:/_fragment
我需要的是非常简单的。对于localhost:8000/article/5
这样的网址,我想检索/article/5
。如何执行此操作?
答案 0 :(得分:2)
以下代码段将起到作用:
{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) }}
app.request.attributes.get('_route')
- 返回当前路线名称。
app.request.attributes.get('_route_params')
- 返回当前路线参数。
path()
- 按路线名称和参数生成路径路径。
此方法不适用于转发的请求。如果是转发请求,则有一个workaround:您应该将“_route”和“_route_params”传递给转发的参数列表。
return $this->forward('Yourbundle:Controller:action', array(
//... your parameters...,
'_route' => $this->getRequest()->attributes->get('_route'),
'_route_params' => $this->getRequest()->attributes->get('_route_params');
));
此外,您可以使用app.request
访问任何Request对象函数,例如getPathInfo(),它应返回当前路径路径。
{{ app.request.pathInfo }}