PHP Template Engine:Twig 语法汇总
2016-07-13 13:22
676 查看
1.Twig 简介
Twig作为PHP模板引擎,具有如下特点:Fast: Twig compiles templates down to plain optimized PHP code. The overhead compared to regular PHP code was reduced to the very minimum.
Secure: Twig has a sandbox mode to evaluate untrusted template code. This allows Twig to be used as a template language for applications where users may modify the template design.
Flexible: Twig is powered by a flexible lexer and parser. This allows the developer to define its own custom tags and filters, and create its own DSL.
2.语法Syntax
参考官方文档:Twig for Template Designers2.1 常用IDE twig扩展
Textmate via the Twig bundleVim via the Jinja syntax plugin or the vim-twig plugin
Netbeans via the Twig syntax plugin (until 7.1, native as of 7.2)
PhpStorm (native as of 2.1)
Eclipse via the Twig plugin
Sublime Text via the Twig bundle
GtkSourceView via the Twig language definition (used by gedit and other projects)
Coda and SubEthaEdit via the Twig syntax mode
Coda 2 via the other Twig syntax mode
Komodo and Komodo Edit via the Twig highlight/syntax check mode
Notepad++ via the Notepad++ Twig Highlighter
Emacs via web-mode.el
2.2 variables 变量
例子
1. {{ foo.bar }} 2. {{ foo['bar'] }}
”{{ }}“为twig中的结构符号,表明显示的内容,例子中第一行将显示foo变量的bar属性内容。除此以外还有包含用于if,for的判断结构”{% %}“和注释的”{# #}“结构。
##控制结构 {% for i in range(0, 3) %} {{ i }}, {% endfor %} ##注释结构 {# equivalent to the non-working foo.data-foo #}
声明变量
{% set foo = 'foo' %} {% set foo = [1, 2] %} {% set foo = {'foo': 'bar'} %}
2.3 Filters
类似于linux命令行中的管道pipe和编程语言(eg.js)的函数链(function chain),twig中也利用“|”符号来链接针对数据流的操作。1. {{ name|striptags|title }}//removes all HTML tags from the name and title-cases it: 2. {{ list|join(', ') }}//join a list by commas,如果list=['hello',2,3],则结果为"hello,2,3" 3. To apply a filter on a section of code, wrap it in the filter tag: {% filter upper %} This text becomes uppercase {% endfilter %}
twig自身包含了许多filters,也可以自己定义filters:
2.4 函数function
{% for i in range(0, 3) %} {{ i }}, {% endfor %}
上例中”range”生成从0到3的整数数组,其他函数参见官网
2.5 include其他文件
{{ include('sidebar.html') }}
2.6 模板继承Template Inheritance
twig中最为重要的部分,用类似于类的形式使用模板。1.定义一个base.html文件,用{% block * %}结构定义四个块。
<!DOCTYPE html> <html> <head> {% block head %} <link rel="stylesheet" href="style.css" /> <title>{% block title %}{% endblock %} - My Webpage</title> {% endblock %} </head> <body> <div id="content">{% block content %}{% endblock %}</div> <div id="footer"> {% block footer %} © Copyright 2011 by <a href="http://domain.invalid/">you</a>. {% endblock %} </div> </body> </html>
2.子模版继承base.html,并重新覆写block中的内容
{% extends "base.html" %} {% block title %}Index{% endblock %} {% block head %} {{ parent() }} <style type="text/css"> .important { color: #336699; } </style> {% endblock %} {% block content %} <h1>Index</h1> <p class="important"> Welcome to my awesome homepage. </p> {% endblock %}
相关文章推荐
- 一个关于if else容易迷惑的问题
- myTemplate模板引擎
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- rem : web app适配的秘密武器
- jquery高级应用之Deferred对象
- 关于浮动与清除浮动,你应该知道的
- 数组reduce方法的高级技巧
- php7 读取php.ini[4]
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP