我的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 %}
这种方法可能有问题吗?
答案 0 :(得分:3)
您正在使用不允许覆盖块的include
。
是否有理由使用include
代替extend
?
另一种解决方案是使用与embed
具有相同功能的include
,但允许同时覆盖块:
答案 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 %}