我想在 Twig 视图中查看 Symfony 3 中的当前路线。
我已经做了一些研究,但我没有找到任何解决方案。我在 Twig 视图中尝试以下操作:
{{ app.request.uri }}
Run Code Online (Sandbox Code Playgroud)
它返回如下内容: http://localhost:8000/_fragment?_path=_format%3Dhtml%26_locale%3Dfr%26_controller%3DFOSUserBundle%253ASecurity%253Alogin
{{ app.request.get('_route') }}
Run Code Online (Sandbox Code Playgroud)
总是返回 NULL。
{{ app.request.getpathinfo }}
Run Code Online (Sandbox Code Playgroud)
一直有: /_fragment
我需要的很简单。对于像 的 URL localhost:8000/article/5,我想检索/article/5.How to do this?
Mik*_*lov 11
以下代码片段可以解决问题:
{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) }}
Run Code Online (Sandbox Code Playgroud)
app.request.attributes.get('_route') - 返回当前路线名称。
app.request.attributes.get('_route_params') - 返回当前路线参数。
path() - 通过路由名称和参数生成路由路径。
这种方法不适用于转发的请求。在转发请求的情况下,有一个解决方法:您应该将“_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');
));
Run Code Online (Sandbox Code Playgroud)
您还可以使用app.request访问任何请求对象函数,例如 getPathInfo(),它应该返回当前路由路径。
{{ app.request.pathInfo }}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16173 次 |
| 最近记录: |