我有两个模板:
Fields.html.twig ,其中包含子模板。
{% block important %}
This block should be renderable from the sub template
{% endblock important %}
{% include 'XButton.html.twig' %}
XButton.html.twig ,需要呈现模板中定义的包含它的块。
block('important')
似乎包含的模板无法简单地呈现包含它的人的块 父模板如何将完整上下文传递给子项,以便子项可以访问父项中定义的块?
答案 0 :(得分:0)
您尝试做的事情是不可能的,因为包含的模板无法了解其他模板中定义的块...
您需要以不同的方式构建代码,以便以某种方式在父级中定义块的内容 - 您至少有几个选项:
set
和include
:https://twigfiddle.com/l536np Fields.html.twig
{% set important %}
You define the child content as a variable in the parent...
{% endset %}
{% include 'XButton.html.twig' %}
XButton.html.twig
{{ important }}
embed
:https://twigfiddle.com/y9pp6p Fields.html.twig
{% embed 'XButton.html.twig' %}
{% block important %}
You define the block content in the parent...
{% endblock %}
{% endembed %}
XButton.html.twig
{{ block('important') }}
答案 1 :(得分:-1)
您可以通过传递父模板名称
来实现{% block important %}
This block should be renderable from the sub template
{% endblock important %}
{% include 'XButton.html.twig' with {'parent': _self} %}
然后在包含模板中使用它
{{ block('important', parent) }}
虽然通过这种方式,块的内容将呈现两次 - 一次在父级中定义,一次在子级中 - 请参阅https://twigfiddle.com/6t0l6p