Twig是一种PHP模板引擎,最近,由于比较频繁的使用Twig模板,于是想总结一下一些常用的基本用法,希望能给对Twig还不熟悉的朋友带来帮助。
首先贴一下Twig官方文档链接:Twig模板语法官方文档
一、 变量定义与使用
-
使用
set
定义变量,使用{{ }}
使用变量。{% set text= 'content' %} <p class="content">{{ text }}</p>
-
使用
.
获取对象中的值。<p class="content">{{ item.title}}</p> <p class="content">{{ item.content}}</p>
二、Twig 中的 if 判断
-
如果为真
{% set bool = true %} {% if imgs %} <p>这里写内容</p> {% endif %}
-
如果a和b为真
{% set a = true %} {% set b = false %} {% if a and b %} <p>这里写内容</p> {% endif %}
-
如果a或b为真
{% set a = true %} {% set b = false %} {% if a or b %} <p>这里写内容</p> {% endif %}
-
变量是否定义
{% if name is defined %} <p>这里写内容</p> {% endif %}
-
变量是否存在
{% if name is null %} <p>这里写内容</p> {% endif %}
-
if…else
{% if count == 0 %} <p>情况一</p> {% elseif count > 99 %} <p>情况二</p> {% else %} <p>情况三</p> {% endif %}
三、 Twig数组的使用
-
定义数组
set
:{% set suffix = ['jpg', 'png', 'jpeg', 'gif', 'webp'] %}
-
获取数组长度
array|length
:{{ suffix|length }}
-
获取数组元素
array[下标]
{{ array[0] }}
-
Twig没有push方法,我们可以使用
merge
实现为数组push一个元素:{% set imgs = [] %} {% set suf= 'png' %} {% if suf in suffix %} {% set imgs = imgs|merge([suf]) %} {% else %}
-
判断某元素是否在数组中:
{% if suf in suffix %} <p>这里写内容</p> {% else %}
-
判断某元素不在数组中:
{% if suf not in suffix %} <p>这里写内容</p> {% else %}
-
判断是否是空数组,如果不是空数组:
{% if imgs %} <p>这里写内容</p> {% endif %}
四、 Twig中的for循环
-
for循环
{% for item in list %} {% if item.id == 0 %} <div>我是特殊的</div> {% endif %} <p title="{{ item.title}}">{{ item.title}}</p> {% endfor %}
-
带键值的for循环
{% for key,item in list %} <div>{{ key }}</div> <p title="{{ item.title}}">{{ item.title}}</p> {% endfor %}
五、其他
-
html转义。
当我们在后台使用富文本输入了内容,不想在前端显示html代码,而希望得到html效果,只需要按下面的方式书写即可。{% autoescape false %} <div>{{ post.content }}</div> {% endautoescape %}
-
Twig实现类似PHP json_encode功能。
var object = {{ object|json_encode|raw }}
其中,object是php数组对象,当我们需要将其转成js可用的对象,使用上述Twig语法即可。
-
Twig中的数学运算符。
Twig允许您在模板中进行数学运算;支持以下运算符:+:将两个数字加在一起(将操作数强制转换为数字)。{{ 1 + 1 }} 打印2
-:从第一个数字中减去第二个数字。是 。{{ 3 - 2 }} 打印1
/:除以两个数字。返回的值将是一个浮点数。是。{{ 1 / 2 } 打印 0.5
%:计算整数除法的余数。是 。{{ 11 % 7 }} 打印4
//:将两个数字相除并返回底整数结果。{{ 20 // 7 }} 打印2, {{ -20 // 7 }} 打印 -3
*:将左操作数与右操作数相乘。{{ 2 * 2 }} 打印4
**:将左操作数提高到右操作数的幂。{{ 2 ** 3 }} 打印8 -
Twig中的逻辑运算符。
您可以将多个表达式与以下运算符结合使用:
and:如果左侧和右侧操作数均为true,则返回true。
or:如果左侧或右侧操作数为true,则返回true。
not:否定一条语句。
(expr):对表达式进行分组。 -
Twig中的比较运算符。
下列比较运算符支持在任何表达式:==, !=,<,>,>=,和<=。