PHP Template Engine:Twig 语法汇总

这里写图片描述

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扩展

  1. Textmate via the Twig bundle
  2. Vim via the Jinja syntax plugin or the vim-twig plugin
  3. Netbeans via the Twig syntax plugin (until 7.1, native as of 7.2)
  4. PhpStorm (native as of 2.1)
  5. Eclipse via the Twig plugin
  6. Sublime Text via the Twig bundle
  7. GtkSourceView via the Twig language definition (used by gedit and other projects)
  8. Coda and SubEthaEdit via the Twig syntax mode
  9. Coda 2 via the other Twig syntax mode
  10. Komodo and Komodo Edit via the Twig highlight/syntax check mode
  11. Notepad++ via the Notepad++ Twig Highlighter
  12. 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 %}
                &copy; 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 %}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值