Twig表达式

2020-06-16  本文已影响0人  Cute_小肥鸡

Twig 表达式分为字面表达式、数学表达式、逻辑表达式、比较表达式、包含表达式、测试表达式、字符串插值表达式及其它表达式等多种类型。

字面表达式

字面表达式表达的就是其字面含义,如字符串、数字、数组、哈希、布尔、空值等数据类型。如 "Hello World", 42, 42.23, ["foo", "bar"], {"foo": "bar"}, true, false, null 等等

数学表达式

使用数学表达式可以在模板中进行数值计算,Twig支持以下操作符:

逻辑表达式

用于连接多个表达式并判断结果真假(ture/false)

比较表达式

用于对表达式两侧的数据进行比较

{% if 'Twig' starts with 'T' %}
{% endif %}

{% if 'Twig' ends with 'g' %}
{% endif %}

正则表达式:较为复杂的字符串匹配可以用 matches 操作符使用正则表达式

{% if phone matches '/^[\\d\\.]+$/' %}
{% endif %}

包含运算符(Containment Operator)

使用 in 运算符判断左侧数据是否包含在右侧数据中

{# 下列例子结果都为 true #}

{{ 1 in [1, 2, 3] }}

{{ 'cd' in 'abcde' }}

测试运算符

使用 is 运算符判断左侧数据是否与右侧测试项相符

{# 测试name变量是否为奇数 #}
{{ name is odd }}

{# 测试是否与常量相符 #}
{% if post.status is constant('Post::PUBLISHED') %}

{% if post.status is not constant('Post::PUBLISHED') %}

{% if not (post.status is constant('Post::PUBLISHED')) %}

Twig内置的测试项有 constant, defined, divisible_by, empty, even, iterable, null, odd, same_as。

其它运算符

字符串插值表达式

使用在双引号字符串中使用 #{表达式} 格式语法,可以将表达式结果插入字符串中

{{ "foo #{bar} baz" }}
{{ "foo #{1 + 2} baz" }}

空白符控制

使用 spaceless 标签可以移除 HTML 标签之间的空白符

{% spaceless %}
    <div>
        <strong>foo bar</strong>
    </div>
{% endspaceless %}

{# 输出结果会移除HTML标签间的所有空白符
结果为:<div><strong>foo bar</strong></div> 
#}

除了使用 spaceless 标签,还可以在使用 - 控制符来移除开头或结尾的空白符

{% set value = 'no spaces' %}
{#- No leading/trailing whitespace -#}
{%- if true -%}
    {{- value -}}
{%- endif -%}

{# 输出结果:'no spaces' #}


{% set value = 'no spaces' %}
<li>    {{- value }}    </li>

{# 输出结果:'<li>no spaces    </li>' #}
上一篇 下一篇

猜你喜欢

热点阅读