2017-02-19 77 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