2012-05-20 144 views
5

ので、私は次のようにレンダリングされたのテンプレートでサブメニューを表示することができ、私はSymfony2のに非常に新しいだと私はTWIGで現在のルートをテストできるようにする必要があります:私は使用してみましたサイドバー・テンプレート内TWIGで現在のURLまたはルートを取得するにはどうすればよいですか?

{% render "CPAdminBundle:Messages:sidebarMenu" %} 
{% render "CPAdminBundle:Readings:sidebarMenu" %} 

次のようにエラーが発生します。

path(app.request.attributes.get('_route')) 

私は達成しようとしていることを行う正しい方法は何ですか?

+0

あなたは[KnpMenuBundle](https://github.com/KnpLabs/KnpMenuBundle/blob/master/Resources/doc/index.md)チェックアウトする必要があり、それはあなたのメニューに関連する問題の多くを解決します。 – Maerlyn

答えて

22

実行するチェックはビューに属しません。ビューは、どのような種類のロジックも表示しないでください。

コントローラでチェックを行い、変数に格納し、この変数をビューに渡し、そこにこの変数の値をチェックします。
すべての操作でこれを行う場合は、kernel.controller eventをご覧ください。

とにかくビューで実行したい場合は、単にapp.request.attributes.get('_route')と目的のルートを比較してください。私はなぜあなたがpath()に入れているのか分かりません。

{% if app.request.attributes.get('_route') == 'my_route' %} 
{% endif %} 
+0

パスは私がGoogleから離したものでしたが、私が** {{app.request.attributes.get( '_ route')}} **を出力しようとすると出力に** _ internal **と表示され、私のサイドバーに表示され、現在のルートに従ってサブメニューを表示する10個の枝テンプレートがあるので、私が必要とするビュー内のルート名を取得するようです。 – MikeGA

+0

'$ this-> getRequest()の出力は何ですか? >属性 - > get( '_ route') 'コントローラで? –

+0

これは私の予想どおりの現在のルートの名前を私に提供しますが、私は約20台持っているすべてのコントローラでこれを行うべきではないと思うのですが、サイドバーテンプレートでチェックする必要はないと思いませんか? – MikeGA

関連する問題