Twig模板的使用

1.引言

    本文中小结了Twig模板的入门级的基本使用(仅适合入门),更多详细的使用方法可以访问:http://twig.sensiolabs.org/doc/2.x/ (英文) 来进行学习研究。

2.Twig——模板引擎

1.  {% ... %}和{{ ... }}

    第一种是用来控制的,比如for循环;第二种是用来输出变量和表达式的。

2.  输出变量。如输出$hello:  {{hello}}

3.  如传递给模板的是对象或者数组,可使用点 . 来输出对象的属性或者方法,或者数组的成员,或者可以使用下标的方式。

    {{ foo.bar }}

    {{ foo.[‘bar‘] }}

    返回的值不存在就会返回null;

4.  for.bar在模板中会进行以下的操作

    。。。如果foo是个数组,就尝试返回bar成员,如果不存在的话,往下继续;

    。。。如果foo是个对象,会尝试返回bar属性,如果不存在的话,往下继续;

    。。。会尝试运行bar方法,如果不存在的话,往下继续;

    。。。会尝试运行getBar方法,如果不存在的话,往下继续;

    。。。会尝试运行isBar方法,如果不存在的话,返回null。

    for['bar'] —— for必须是个数组,尝试返回bar成员,如果不就返回null

5.  twig中的全局变量

    _self    这个参看macro标签

    _context    这个就是当前的环境

    _charset    当前的字符编码

6.  变量赋值——具体参见set标签

    {% set foo = 'foo' %}

    {% set foo = [1, 2] %}

    {% set foo = {'foo': 'bar'} %}

7.  过滤器  filter

    变量可以被过滤器修饰;过滤器和变量用(|)分割开;过滤器也是可以有参数的;过滤器也可以被多重使用。

8.  函数  function

    Twig有一些内置函数,例如返回0到3的数组就可以用到range函数:

    {% for i in range(0, 3) %}

    {{ i }},

    {% endfor %}

9.  流程控制 —— 支持 for循环 和 if/else if/eise 结构

    例:

   

Members

   

            {% for user in users %}

               

  • {{ user.username | e }}
  •         {% endfor %}

       

10.  注释 —— 使用{{#...#}},注释掉包围的内容,可以注释单行或多行

11.  载入其它模板

    i.详见include标签,会返回经过渲染的内容到当前的模板里

    例如:{% include 'sidebar.html' %}

    ii.当前模板的变量也会传递到被include的模板里,在那里面可以直接访问你这个模板的变量。例如:

    {% for box in boxes %}

        {% include "render_box.html" %}

    {% endfor %}

    在render_box.html中是可以访问box变量的;

    加入其他参数可以使被载入的模板只访问部分变量,或者完全访问不到。

12.  模板继承

    i.TWIG中最有用到功能就是模板继承,他允许你建立一个“骨骼模板”,然后你用不同到block来覆盖父模板中任意到部分。而且使用起来非常到简单。

    ii.我们先定义一个基本页base.html他包含许多block块,这些都可以被子模板覆盖。

    iii.下面定义了4个block块,分别是block head, block title, block content, block footer


Twig模板的使用_第1张图片
base.html

   iv.注意

       1.block是可以嵌套的

        2.block可以设置默认值(中间包围的内容),如果子模板里没有覆盖,那就直接显示默认值。比如block footer,大部分页面你不需要修改(省力),但你需要到时候仍可以方便到修改(灵活)

13.  子模板的定义

Twig模板的使用_第2张图片
子模板

  注意:{% extends "base.html" %}必须是第一个标签。

        其中block footer就没有定义,所以显示父模板中设置的默认值。

        需要增加一个block的内容,而不是全覆盖,你可以使用parent函数

Twig模板的使用_第3张图片

    extends标签只能有一个,所以你只能有一个父模板;但有种变通到方法来达到重用多个模板到目的,具体参见手册的use标签。

14.  HTML转义

    i.主要是帮助转义尖括号等 <,  >,  &,  " 

        可以有两种办法。一种是用标签,另一种是使用过滤器。

    因为 {{ 是TWIG的操作符,如果你需要输出两个花括号,最简单到办法就是

        {{ '{{' }}

    还可以使用raw标签和raw过滤器,详细参考手册

Twig模板的使用_第4张图片

15.  macros 宏

    宏有点类似于函数,常用于输出一些html标签。

    这里有个简单示例,定义了一个输出input标签的宏。

Twig模板的使用_第5张图片

    宏参数是没有默认值的,但你可以通过default过滤器来实现。

3.结语

    上面关于Twig的一些使用的方法,对于初学Twig的朋友们来说还是有点用处的。

    当然,有更多需要请百度,毕竟万事不解问百度,是我们一贯秉承的传统。

    本人随笔,一是希望可以给有需要的人提供一些帮助,再者是在以后的开发过程中遇到同类的问题,可以来回头看一看。

此致,撒花!!!

你可能感兴趣的:(Twig模板的使用)