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中的默认内容。