Twig:如何显示块内包含模板

时间:2014-01-10 10:51:51

标签: php templates twig block

我有这种模板文件结构:

   {# layout.html #}

    <!DOCTYPE HTML>
    <html lang="pt-br">
    <head>
       <meta name="viewport" content="width=device-width, initial-scale=1.0" charset="UTF-8">
       <title>Twig Project</title>
    </head>

    <body>
      <div id="content">
         {% block body %} {% endblock body %}
      </div>
      <div id="footer"> 
         {% block footer %} {% endblock footer %}
      </div>
    </body>
   </html>

----------

{# specialpage.html #}

Especial content

{% block footer %} THIS IS A SPECIAL FOOTER {% endblock footer %}

----------

{# page1.html #}

{% extends "layout.html" %}

{% include 'specialpage.html' %}

问题:当我包含“specialpage.html”时,“块页脚”与消息“这是一个特殊的脚”不显示。为什么呢?

1 个答案:

答案 0 :(得分:1)

我一直在努力解决同样的问题。我希望Twig的include标签首先插入包含的模板的内容,然后解析整个内容,当从包含的页面(特殊页面)引用这些内容时,有效地替换扩展页面(布局)中的块。

但相反,我开始相信include标记首先解析包含的模板,并在解析父页面之前插入包含的模板的解析内容。

文档说include标记包含继承父作用域的模板。但似乎这只适用于变量,而不适用于已定义的块。我假设你不能从包含的模板中覆盖父页面或父布局中的块。

我认为我的解决方案在于重写我的布局模板,以便尽可能多地使用&#39; extends&#39;尽可能标记,因为这个标记似乎对启用所需的继承结构至关重要。

虽然我会重写我的模板,并且假设你也应该这样做,我有一点点希望我们做错了,并且有人会采用正确的方式来做到这一点。

相关问题