2012-05-20 229 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

该路径是我从谷歌的东西,但即使我尝试打印** {{app.request.attributes.get('_ route')}} **输出说** _内部**,我可以' t似乎得到了视图中的路由名称,这是我所需要的,因为我有10个树枝模板,它们将在我的边栏中显示,并根据当前路线显示子菜单 – MikeGA

+0

'$ this-> getRequest()的输出是什么? > attributes-> get('_ route')'在控制器中? –

+0

它给了我当前路线的名称,就像我期望的那样,但我不认为我应该在每个控制器中都做到这一点,我将在20左右,你不认为它应该在我的边栏模板中检查吗? – MikeGA