如何将块传递给包含的模板?

时间:2015-06-25 13:21:19

标签: symfony twig

我的Twig文件的结构如下所示:

- "skeleton_main"
  - includes "skeleteon_header"
  - render "block content"

- "skeleteon_header" should render "block breadcrumb"

- "partial"
  - extends "skeleton_main"
  - fills "block breadcrumb"

现在我可以在“ sekeleton_main ”中输出“ block breadcrumb ”,但它不会传递给“ skeleton_header ”。如何从包含的模板中访问和呈现块?我尝试使用{% include '' with {} %},但没有运气。

# skeleton_main
{% include 'header' %}
{% block content %}{% endblock %}

# header
{% block breadcrumb %}{% endblock %}

# partial
{% extends 'skeleton_main' %}
{% block breadcrumb %} Breadcrumb {% endblock %}
{% block content %} Content {% endblock %}

这种方法可能有问题吗?

2 个答案:

答案 0 :(得分:3)

您正在使用不允许覆盖块的include

是否有理由使用include代替extend

另一种解决方案是使用与embed具有相同功能的include,但允许同时覆盖块:

http://twig.sensiolabs.org/doc/tags/embed.html

答案 1 :(得分:0)

我认为你有一个错误的approch。

您应该将header定义为block,而不是单独的模板。

{# skeleton_main #}
{% block header %}
    {% block breadcrumb %}{% endblock %}
{% endblock %}
{% block content %}{% endblock %}

{# partial #}
{% extends 'skeleton_main' %}
{% block breadcrumb %} Breadcrumb {% endblock %}
{% block content %} Content {% endblock %}