2017-09-24 24 views
0

Symfony 3で現在のルートをTwigビューにしたいと思います。Symfony 3.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のようなURLについては、/article/5を検索したいと思います。

{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) }} 

app.request.attributes.get('_route') - 現在のルート名を返します。

答えて

0

次のコードスニペットは、トリックを行います。

app.request.attributes.get('_route_params') - 現在のルートパラメータを返します。

path() - ルート名とパラメータでルートパスを生成します。

この方法は、転送要求では機能しません。転送要求の場合、workaroundがあります。転送されたparamsリストに "_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'); 
)); 

また、あなたは、現在のルート・パスを返す必要があり、そのようなgetPathInfo()などの任意のオブジェクトRequest機能を、アクセスするためにapp.requestを使用することができます。

{{ app.request.pathInfo }} 
+1

「app.request.get( '_ route')」は、デバッグのためだけであり、遅くなる可能性があるといういくつかの情報源を読んでいます。 これは 'app.request.attributes.get( '_ route')'と同じですか? これは今日でも問題がありますか? – Arphel

+0

"app.request"は、アプリケーションの任意の部分(あらゆる環境内)でPHPグローバルを使用する代わりにリクエスト関連の情報にアクセスするために設計されたRequestオブジェクトを指します。 –

+0

転送リクエストの問題の回避策を使用して私の回答を更新しました。 –

関連する問題