提问者:小点点

Symfony2-Twig-如何向父模板发送参数?


我正在使用Symfony2和Twig模板处理一个PHP项目,我找不到解决这个问题的方法。

我有一个管理包,所有的模板都从管理库扩展而来,它有一个带菜单的主模板。

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

有没有办法通过扩展将参数传递给基本模板?


共2个答案

匿名用户

下面是一个简单的例子:

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>
...

第2页。html。细枝:

{# page2.html.twig #}
{% extends 'YourBundle::base.html.twig' %}

{% set menu_selected = 'two' %}

渲染第2页的输出。html。细枝:

<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>

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

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