Php 小枝块间接延伸和附加

Php 小枝块间接延伸和附加,php,html,symfony,twig,Php,Html,Symfony,Twig,我已经将我的布局和模板拆分为几个部分,主要是因为旧的Symfony1习惯 文件layout.html.twig: ... <body> {{ include("ABCBundle:Partials:breadcrumbs.html.twig") }} {% block body %}{% endblock %} </body> ... 文件show.html.twig <div class="abc"> {% block breadcrumbs

我已经将我的布局和模板拆分为几个部分,主要是因为旧的
Symfony1
习惯

文件
layout.html.twig

...
<body>
  {{ include("ABCBundle:Partials:breadcrumbs.html.twig") }}
  {% block body %}{% endblock %}
</body>
...
文件
show.html.twig

<div class="abc">
  {% block breadcrumbs %}
    <a href="#">Home</a>
  {% endblock %}
</div>
{% extends "ABCBundle::layout.html.twig" %}
{% block breadcrumbs %}
  {{ parent() }}
  abc
{% endblock %}

{% block body %}
  (something something)
{% endblock %}

有趣的是,当我渲染
show.html.twig
时,我可以将数据放入
body
块中,一切正常,但我不能使用
breadcrumbs
块做任何事情。无论我做什么-在该块中编写一些东西或调用
parent()
,都不会发生任何事情,只呈现
breadcrumbs.html.twig
中的内容。调用
parent()
以及与扩展块相关的任何其他错误也没有错误。

我认为您应该使用
{%include“…”%}
而不是
{include(“…”)}

根据twig文档,
{%include%}
“包含一个模板,并将该文件的呈现内容返回到当前名称空间”,其中作为include“返回模板的呈现内容”

(这意味着include函数只返回呈现的内容,其中标记将内容添加到当前名称空间,该名称空间将包括您定义的块)

找到了解决方案

看起来您无法从扩展此布局的模板扩展布局的
include
中包含的块:

[partial.html.twig]  --- [      layout.html.twig       ] --- [   template.html.twig  ]
 {% block abc %}        {% include 'partial.html.twig' %}   {% extends layout.html.twig %}
                                                            {% block abc%} aaa {%endblock %}

您必须执行一些小技巧,包括向布局中添加额外的内容,并将
partial.html.twig
中的原始块替换为条件块。更多信息请点击此处:

感谢您提供的有用信息!我相信这将在以后的任务中非常有用,但不幸的是没有解决我的问题。如果删除对parent()的调用,它是否显示了您在show.html.twig块中放入的任何内容?不幸的是,没有。它看起来与我在
breadcrumbs
块中写入的内容无关
show.html.twig
-始终显示
breadcrumbs.html.twig中的默认内容。