如何将块传递给包含的模板?
How to pass a block to an included template?
我的 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 %}
也许这种方法有问题?
您使用的 include
不允许覆盖块。
是否有理由使用 include
而不是 extend
?
另一种解决方案是使用 embed
,它的功能与 include
相同,但同时允许覆盖块:
我认为你的方法不对。
您应该将 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 %}
我的 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 %}
也许这种方法有问题?
您使用的 include
不允许覆盖块。
是否有理由使用 include
而不是 extend
?
另一种解决方案是使用 embed
,它的功能与 include
相同,但同时允许覆盖块:
我认为你的方法不对。
您应该将 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 %}