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

Ger*_*ena 47 php symfony twig

我正在使用带有Twig模板的Symfony2进行PHP项目,我无法找到解决此问题的方法.

我有一个管理包,所有模板都从管理员基础扩展而来,管理基础有一个带有菜单的主模板.

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

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

Pau*_*aul 85

这是一个简单的例子:

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>
...
Run Code Online (Sandbox Code Playgroud)

page2.html.twig:

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

{% set menu_selected = 'two' %}
Run Code Online (Sandbox Code Playgroud)

渲染page2.html.twig的输出:

<ul>
  <li>One</li>
  <li class="selected">Two</li>
  <li>Three</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

  • 只是一个注释(我自己偶然发现)如果你在你的基础中设置变量,那么继承模板将无法覆盖它. (17认同)
  • @carbontwelve我也注意到了这一点...我想知道是否有办法在基本模板中设置变量,然后在子模板中覆盖它? (2认同)
  • 也许,在父级中,将其包装在检查中: `{% if not menu_selected is Defined %}{% set menu_selected = 'one' %}{% endif %}` (2认同)