您的位置:首页 > 编程语言 > PHP开发

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 Designers

2.1 常用IDE twig扩展

Textmate via the Twig bundle

Vim 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 %}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息