使用
请注意
水平重用是一个高级的Twig特性,在常规模板中几乎不需要。它主要用于需要在不使用继承的情况下使模板块可重用的项目。
模板继承是Twig最强大的特性之一,但它仅限于单一继承;一个模板只能扩展一个模板。这个限制使得模板继承易于理解和调试:
1 2 3 4
{%扩展“base.html”%}{%块标题%}{%endblock%}{%块内容%}{%endblock%}
水平重用是实现与多重继承相同目标的一种方式,但没有相关的复杂性:
1 2 3 4 5 6
{%扩展“base.html”%}{%使用“blocks.html”%}{%块标题%}{%endblock%}{%块内容%}{%endblock%}
的使用
语句告诉Twig导入定义在blocks.html
到当前模板中(它类似于宏,但用于块):
1 2 3
{# blocks.html #}{%块侧边栏%}{%endblock%}
在本例中,使用
语句导入侧边栏
块放入主模板中。代码大部分相当于下面的代码(导入的块不会自动输出):
1 2 3 4 5
{%扩展“base.html”%}{%块侧边栏%}{%endblock%}{%块标题%}{%endblock%}{%块内容%}{%endblock%}
请注意
的使用
标记只在模板没有扩展另一个模板、没有定义宏以及主体为空的情况下导入模板。但是它可以使用其他模板。
请注意
因为使用
语句的解析独立于传递给模板的上下文,模板引用不能是表达式。
主模板还可以覆盖任何导入的块。属性侧边栏
Block,然后是blocks.html
将被忽略。为了避免名称冲突,你可以重命名导入的块:
1 2 3 4 5 6 7
{%扩展“base.html”%}{%使用"blocks.html",边栏为base_sidebar,标题为base_title %}{%块侧边栏%}{%endblock%}{%块标题%}{%endblock%}{%块内容%}{%endblock%}
的父()
函数自动确定正确的继承树,因此可以在覆盖导入模板中定义的块时使用:
1 2 3 4 5 6 7 8 9 10
{%扩展“base.html”%}{%使用“blocks.html”%}{%块侧边栏%}{{父()}}{%endblock%}{%块标题%}{%endblock%}{%块内容%}{%endblock%}
在这个例子中,父()
将正确地调用侧边栏
从blocks.html
模板。
提示
重命名允许你通过调用“parent”块来模拟继承:
1 2 3 4 5 6 7
{%扩展“base.html”%}{%使用"blocks.html",边栏为parent_sidebar %}{%块侧边栏%}{{块(“parent_sidebar”)}}{%endblock%}
请注意
你可以任意使用使用
语句在任何给定模板中。如果两个导入的模板定义相同的块,则最新的模板胜出。