如何使用继承来组织你的Twig模板
在Symfony中一般采用三级继承来完成模板创建。它可以完美地覆盖(现有)三种不同类型的模板:
- 首先创建一个 - app/Resources/views/base.HTML.twig文件,它包含了你的程序的主要布局,该模板被命名为- base.html.twig;
- 为你站点的每个“section”创建一个模板。比如,一个博客功能, 它有自己的模板 - blog/layout.html.twig。该模板只包含“与blog相关”的特定元素,比如body;
| 1 2 3 4 5 6 7 8 | {# app/Resources/views/blog/layout.html.twig #}
{% extends 'base.html.twig' %}
 
{% block body %}
    <h1>Blog Application</h1>
 
    {% block content %}{% endblock %}
{% endblock %} | 
- 为每个页面创建一个单独的模板并令它们继承合适的section模板。比如,“index”页将调用一些内容到 Blog/index.html.twig,以显示每一篇博客主题。
| 1 2 3 4 5 6 7 8 9 | {# app/Resources/views/blog/index.html.twig #}
{% extends 'blog/layout.html.twig' %}
 
{% block content %}
    {% for entry in blog_entries %}
        <h2>{{ entry.title }}</h2>
        <p>{{ entry.body }}</p>
    {% endfor %}
{% endblock %} | 
注意该模板是继承了section模板(blog/layout.html.twig),而section模板又照例继承了程序的基础布局模板(base.html.twig)。这就是通常说的三级继承模式。
你在构建程序时可以选择遵循这种模式,也可以让每个模板时直接继承程序级别的基础布局模板(如 {% extends ‘base.html.twig’ %} 。三级模板继承模式对于bundle作者来说是最佳实践,可令bundle的基础布局模板轻松被覆写,或者将其扩展为你自己的程序级基础布局。