Symfony2 – 树枝 – 如何发送参数到父模板?

我正在使用Symfony2与Twig模板的PHP项目,我找不到解决此问题的方法。

我有一个pipe理包,所有的模板扩展从pipe理基地,其中有一个主菜单模板。

我需要将页面的基本模板中的菜单的当前选项卡设置为当用户在该页面上时进行select。

有没有办法通过扩展将parameter passing给基础模板?

这是一个简单的例子:

base.html.twig

{# base.html.twig #} ... <ul> <li{% if menu_selected|default('one') == 'one' %} class="selected"{% endif %}>One</li> <li{% if menu_selected == 'two' %} class="selected"{% endif %}>Two</li> <li{% if menu_selected == 'three' %} class="selected"{% endif %}>Three</li> </ul> ... 

page2.html.twig

 {# page2.html.twig #} {% extends 'YourBundle::base.html.twig' %} {% set menu_selected = 'two' %} 

渲染page2.html.twig的输出:

 <ul> <li>One</li> <li class="selected">Two</li> <li>Three</li> </ul> 

我刚刚发现的一个更好的方法是通过检查快捷路由名称的路由的基本方法:

 <li class="{% if app.request.attributes.get('_route') == 'homepage' %}active{% endif %}">Home</li> 

或者另一种方法是根据它所属的组来命名所有的路由快捷方式名称。 例如,您的产品控制器中的所有路由都以“product _….”开始,然后在模板中可以执行此操作:

 <li class="{% if app.request.attributes.get('_route') starts with 'product' %}active{% endif %}">