获取Symfony 3.3和Twig

时间:2017-09-24 15:37:54

标签: symfony twig

我想在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。如何执行此操作?

1 个答案:

答案 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 }}