twig 是php模板引擎
twig帮助文档:
https://www.kancloud.cn/yunye/twig-cn/159684
相比之下,Twig拥有非常简洁的语法,它使得模版更具可读性:
{{ var }}
{{ var|escape }}
{{ var|e }} {# shortcut to escape a variable #}
模版导向语法:Twig为通用的模式提供了快捷方式,例如在遍历一个空数组时,会显示一个默认文本:
{% for user in users %}
* {{ user.name }}
{% else %}
No users have been found.
{% endfor %}
全功能:Twig为你提供了轻松构建强大模版的一切:多重继承,块,自动化输出转义,以及其他许多特性:
{% extends "layout.html" %}
{% block content %}
页面内容...
{% endblock %}
安全:说到安全,Twig拥有一些独特的特性:
自动输出转义:为安全考虑,你可以全局启用自动输出转义,或者只对某个块启用:
{% autoescape true %}
{{ var }}
{{ var|raw }} {# var won't be escaped #}
{{ var|escape }} {# var won't be doubled-escaped #}
{% endautoescape %}
沙盒:Twig可以在沙盒环境下评估任意模版,用户只能访问一组有限的标签,过滤器,以及由开发者定义的对象方法。沙盒可以全局地或者单独对某些模版启用:
{{ include('page.html', sandboxed = true) }}
清晰的错误信息:无论何时你在模版中遇到了语法错误,Twig都会输出带有出错的文件名和行号的帮助信息。它非常有助于调试。
快速:Twig的目标之一就是尽可能地快。为了尽可能实现最佳的速度,Twig将模版编译成极致优化的PHP代码。它的开销与常规的PHP代码相比,已经降到了极低。
{% for item in navigation %}
<li><a href="{{ item.href }}">{{ item.caption }}</a></li>
{% endfor %}
</ul>
<h1>My Webpage</h1>
{{ a_variable }}
有两种形式的分隔符:{% ... %} 和 {{ ... }}。前者用于执行语句,例如for循环;后者将表达式的结果输出到模板中。
###设置变量
你可以在代码块内为变量分配值。这里用到了 set 标签:
{% set foo = 'foo' %}
{% set foo = [1, 2] %}
{% set foo = {'foo': 'bar'} %}
##过滤器
{{ name|striptags|title }}
###全局变量
以下变量在模板中始终可用:
_self: 引用当前模板;
_context: 引用当前上下文;
_charset: 引用当前字符集;
<h1>Members</h1>
<ul>
{% for user in users %}
<li>{{ user.username|e }}</li>
{% endfor %}
</ul>
##注释
{# note: disabled template because we no longer use this
{% for user in users %}
...
{% endfor %}
#}
被引入的模板render_box.html可以使用box变量。
模板的文件名,却决于模板加载器。举个例子:Twig_Loader_Filesystem允许你通过给定文件名称访问其他模板。你可以使用斜线来访问子目录内的模板:
{{ include('sections/articles/sidebar.html') }}