如何使用继承来组织你的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的基础布局模板轻松被覆写,或者将其扩展为你自己的程序级基础布局。