2017-02-19 30 views
2

在我base.html.twig我呈现一个组件:得到symfony3路线控制器/渲染子内采取行动

{% block header %} 
    {{ render(controller("AppBundle:Application\\Header:header")) }} 
{% endblock %} 

有没有一种方法来获得当前的路由操作/控制器?即浏览器中的当前网址?

当我做var_dump($ request-> get('_ route')); die;它的结果为空

+0

的可能的复制[获取当前在树枝模板?](http://stackoverflow.com/questions/9378714/get-current-url-in-twig-template) – MedUnes

+0

不要这么想,当我尝试,我得到这个: 在呈现模板期间抛出了异常(“无法生成指定路由的URL”,因为这样的路由不存在。“)。 – user1009698

+0

其实会是这样的:$ _ SERVER [“REQUEST_URI”]。有没有帮助服务来获取这些数据?包装? – user1009698

回答

2

如果你想获得实际的路线,在你的控制器就可以得到主机请求是这样的:

$this->container->get('request_stack')->getMasterRequest()->get('_route'); 
0

因为我无法通过评论回答,所以我必须将其写为答案。

如上mentionned,这个问题可能是重复的: Get current URL in Twig template

两者都要当前路线的名称和当前的网址,你可以通过你的树枝模板内简单地使其:

<p><strong>current route name</strong> :{{app.request.attributes.get('_route')}}</p> 
<p><strong>current url: </strong> {{ app.request.schemeAndHttpHost ~ app.request.requestUri }}</p> 
+0

我试过了,它打印出这个:当前路由名称: 当前网址:http:// localhost:8000/_fragment?_path = _format%3Dhtml%26_locale%3Den%26_controller%3DAppBundle%253AApplication%255CHeader%253Aheader – user1009698

+0

would你复制/粘贴你的控制器的代码? – MedUnes