定界符
1、{% ... %} 用来执行语句,比如for循环、IF判断、过滤等操作
2、{{ .... }} 用来显示变量
可以符号
== != < > >= <= + - ~ * / // % ** | [] . .. and or not in is b-and b-or b-xor
部分符号的含义如下
~ :连接两字符串,相当于PHP 中的点号
//:整除
**:乘方,相当于PHP 中的^
b-and、b-or、b-xor:按位与、按位或、按位异或
-:减法以及去除空白的简写用法,如{{- 数据}} => 去除左边的空白、{{ 数据-}} => 去除右边的空白、{{- 数据-}} => 去除两边的空白
注释
{# This is Twig Comment #}
快捷方式:ctrl + shift + /
变量
程序会传递给模板若干变量,你需要在模板里输出他们。例如输出$hello {{ hello }}
如果传递给模板的是对象或者数组,你可以使用点. 来输出对象的属性或者方法,或者数组的成员。或者你可以使用下标的方式。
{{ foo.bar }}
js竖线分割的字符串转数组{{ foo['bar'] }}
如果你访问的值不存在就会返回null。TWIG有一整套的流程来确认值是否存在。
for.bar会进行以下操作
。。。如果 foo是个数组,就尝试返回bar成员,如果不存在的话,往下继续
。。。如果foo是个对象,会尝试返回bar属性,如果不存在的话,往下继续。。。会尝试运行bar方法,如果不存在的话,往下继续
。。。会尝试运行getBar方法,如果不存在的话,往下继续
。。。会尝试运行isBar方法,如果不存在的话,返回null
全局变量
∙_self  这个参看macro标签
∙_context 这个就是当前的环境
∙_charset: 当前的字符编码
变量赋值
∙  {% set foo = 'foo' %}
∙  {% set foo = [1, 2] %}
∙  {% set foo = {'foo': 'bar'} %}
数组遍历
-- 按数组value遍历:
{% for value in foo %}
{{ value }}
{% endfor %}
-- 按数组key遍历:
{% for key in foo|keys %}
{{ key }}
{% endfor %}
-- 按key,value遍历
{% for key, value in foo %}
{{ key}}:{{value }}
{% endfor %}
-- 如果 foo 非数组,还可以使用else语句,如:
{% for key, value in foo %}
{{ key}}:{{value }}
{% else %}
foo is Not a Array
{% endfor %}
-- 也可以直接带条件,遍历二维数组时比较有用,可用value.field来判
{% for key, value in foo if value == 1%}
{{ key}}:{{value }}
{% endfor %}
循环体内部变量:
loop.index 循环的次数(从1开始)
loop.index0 循环的次数(从0开始)
loop.first 当第一次循环的时候返回true
loop.last 当最后一次循环的时候返回true
loop.length 循环的总数
loop.parent 被循环的数组
过滤器
变量可以通过过滤器进行修改。过滤器和变量之间使用管道符号(也就是竖线|)分隔开,过滤器括号中可能有可选的参数。多个过滤器可以串连使用,滤波器的输出会被应用于下一个过滤器。
batch:将数组按指定的个数分割成更小的数组,可选的第二个参数用来在元素不够的情况下进行填充。如{{ [1, 2, 3, 4, 5]|batch(2, 'NoItem') }} => [[1, 2], [3, 4], [5, 'NoItem']]
default:当所修饰的数据不存在或为空时,提供默认值。如{{ ''|default('Ruchee') }} => 'Ruchee'
first:返回数组的第一个元素或字符串的第一个字符。如{{ {a: 1, b: 2, c: 3}|first }} => 1
last:返回数组的最后一个元素或字符串的最后一个字符。如{{ {a: 1, b: 2, c: 3}|last }} => 3
replace:替换一个字符串中的指定内容。如{{ '%s1 love %s2'|replace({'%s1': 'Ruchee', '%s2': 'Vim'}) }} => 'Ruchee love Vim'
abs:取绝对值
nl2br:将字符串里的\n 替换成<br/>
join:将数组的各个元素按指定分隔符组成字符串
sort:对数组排序
trim:去除字符串首尾的指定字符,默认为空格
date:格式化时间,可处理与strtotime 兼容的字符串,或DateTime/DateInterval 的实例,可选的第二个参数用于指定时区,如果所修饰的数据为空则默认为当前时间
reverse:反转一个数组或字符串,在array_reverse 的基础上增加了对字符串的处理
slice:截取数组或字符串的一部分,在array_slice 的基础上增加了对字符串的处理
keys:将数组的全部键名提取成一个数组,等同于array_keys
merge:合并两数组,近似于array_merge 。如{{ 数组1|merge(数组2) }} length:返回数组元素的个数或字符串的长度,等同于count 和strlen 的结合体capitalize:将字符串的首字母大写,等同于ucfirst
title:将字符串中每个单词的首字母大写,等同于ucwords
lower:将字符串所有字母全部变成小写,等同于strtolower
upper:将字符串所有字母全部变成大写,等同于strtoupper
split:将字符串分割成数组,等同于str_split
striptags:去除字符串中的HTML/PHP 标记,等同于strip_tags
url_encode:编码链接字符串,等同于urlencode
json_encode:编码JSON 格式,等同于json_encode
format:格式化一个字符串,近似于printf 。如{{ 'My name is %s, and I love %s'|format('Ruchee', 'Vim') }} => 'My name is Ruchee, and I love Vim'
number_format:格式化数值,等同于number_format
convert_encoding:编码转换,第一个参数指定转换后的编码,第二个参数指定转
换前的编码,近似于iconv
内建函数
even:是否为偶数
odd:是否为奇数
empty:是否为空
null:是否为null
defined:是否已定义
sameas:目标变量与指定值是否指向的是内存中的同一个地址,使用形式if 变量值is sameas(指定值)
divisibleby:目标数值是否能够被指定值整除,使用形式if 目标数值divisibleby(指定值),其中指定值不能为0
iterable:目标变量是否是数组或者是否可迭代,使用形式if 变量值is iterable attribute:动态获取变量属性值,两种使用形式为attribute(数组, '元素名') 和attribute(对象, '方法名', 可选参数)
block:重复引用指定代码块,如{{ block('title') }}
constant:从字符串或对象取得常量值
cycle:循环显示一个数组的元素,调用形式为cycle(数组, 一个循环变量) date:格式化时间
dump:在开启调试模式的情况下显示详细的变量信息,等同于var_dump include:包含其他模板文件
parent:在覆盖代码片段时用于引用父片段的内容
random:制造一个随机数
range:返回一个指定区间的数组,可指定步长,Twig 使用.. 作为其简用法,等同于range
template_from_string:根据字符串加载模板
流程控制
{% if aaa %} xxx {% elseif bbb %} yyy {% else %} zzz:判断语句

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。