Twig模版语言入门

Twig中有两种定界符 {% ... %}{{ ... }} , 前一种用来执行语句,比如for循环、IF判断、过滤等操作,后一种模版中用来显示变量。Twig常用用法记录如下:

可用符号

== != < > >= <= + - ~ * / // % ** | [] . .. and or not in is b-and b-or b-xor

部分符号的含义如下

注释

{# This is Twig Comment #}

变量

foo 为PHP赋值变量, 则模版中可以使用 {{ foo }}。如果该变量为数组或者对象,则可以使用{{ foo.bar }}来表示,也可以直接调用类中的方法,如 {{ foo.getName }}或当有参数传递时使用 {{ foo.getName(p1, p2, p3) }}

当模版中使用{{ foo.bar }}时,PHP会做如下判断来检测对应变量的值:

当foo为数组时,模版也可以这样使用:{{ foo['bar'] }}

变量未定义默认值设置: {{ var|default('var is not defined') }}

可使用 {% set 变量名=变量值 %} 声明变量,也可写成 {% set 变量名 %} 变量值 {% endset %}

PHP 中非关联数组被映射成 [元素1, 元素2, ...],关联数组则被映射成 {键1: 值1, 键2: 值2, ...}

数组遍历

  1. 按数组value遍历:
{% for value in foo %}
    {{ value }}
{% endfor %}
  1. 按数组key遍历:
{% for key in foo|keys %}
    {{ key }}
{% endfor %}
  1. 按key,value遍历
{% for key, value in foo %}
    {{ key}}:{{value }}
{% endfor %}
  1. 如果 foo 非数组,还可以使用else语句,如:
{% for key, value in foo %}
    {{ key}}:{{value }}
{% else %}  
    foo is Not a Array
{% endfor %}
  1. 也可以直接带条件,遍历二维数组时比较有用,可用value.field来判断:
{% for key, value in foo if value == 1%}
    {{ key}}:{{value }}
{% endfor %}

循环体内部变量:

条件语句

  1. 需要使用 or 和 and 代替 ||、&&
{% if a == '1' or b == '2' %}
a = 1 or b = 2
{% endif %}
  1. 判断变量是否定义
{% if var is not defined %}
    {# do something #}
{% endif %}
  1. 是否为NULL
{% if var is null %}
    {# do something #}
{% endif %}
  1. 是否为false
{% if var is sameas(false) %}
    {# do something %}
{% endif %}
  1. 解析定界符
{{ '{{' }}
 
{% raw %}
    <ul>
    {% for item in seq %}
        <li>{{ item }}</li>
    {% endfor %}
    </ul>
{% endraw %}

控制结构

内建过滤器

过滤器用来修饰数据,各过滤器可以用竖线分隔进行链式调用,用括号传递参数。也可以将过滤器当成单独的函数来用,形式如下:

{% filter 过滤器名 %}
待处理的数据
{% endfilter %}

借用自PHP自带函数的过滤器

内建函数

-- EOF --
发表于: 2013-06-02 19:24
标签: PHP Twig