作为程序员一定要保持良好的睡眠,才能好编程

twig模板简单实用介绍

发布时间:2018-12-31

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') }}