1

我有一个包含定义块 Z 的视图​​ B 的视图 A。我可以有一个扩展 A 并重新定义块 Z 的视图​​ C 吗?

不用说,如果我将 B 粘贴到 A 中(不使用包含),它就可以工作。

举一个实际的例子:

A是项目的基础。B 是包含菜单的项目的标题。C 是项目的任何页面。

我为 B 中菜单的每个项目定义了一个 {% block active %}{% endblock %},我想通过 C 中的 {% block active %} class="active" {% endblock %} 重新定义以应用某些当前活动菜单项的样式。

如果这不是要走的路,哪个是最好的解决方法/解决方案?

4

1 回答 1

1

不幸的是,这是不可能的,或者不会那么容易。

为什么不从控制器将变量绑定到模板并通过包含将其传递给导航?

{% include MyAwesomeBundle:Modules:nav.html.twig with {activeItem: activeItem, activeItemClassName: activeItemClassName} %}

您想要的替代品

{# in base layout template #}
{% block nav %}
    {% include MyAwesomeBundle:Modules:nav.html.twig %}
{% endblock %}

{# in page template #}
{% extends base-layout.html.twig %}

{% block nav %}
    {% include MyAwesomeBundle:Modules:nav_for_news.html.twig %} {# nav_for_news.html.twig extends nav.html.twig #}
{% endblock %}

这是你能从你想要的东西中得到的最接近的东西

查看有用的parent() 树枝函数。

于 2013-03-17T04:32:00.887 回答