ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### 函数 | 方法名 | 作用 | | :-: | :-: | | content | 将在此之前输出的内容包含进来 | | get\_content | content方法的别名 | | partial | 在当前模板中动态调取一个代码片段 | | super | 获取(渲染)父模板中的内容 | | time | 返回当前的 Unix 时间戳 | | date | 格式化输出一个本地时间/日期 | | dump | 输出一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。 | | slice | 从字符串/数组中截取一部分 | `super` 用法示例: ~~~ {# main.volt #} <!DOCTYPE html> <html> <head> <title>Title</title> </head> <body> {% block content %}<h1>Table of contents</h1>{% endblock %} </body> </html> {# layout.volt #} {% extends "main.volt" %} {% block content %} {{ super() }} <h2>contents 2</h2> {% endblock %} ~~~ 渲染后输出: ~~~ <!DOCTYPE html> <html> <head> <title>Title</title> </head> <body> <h1>Table of contents</h1> <h2>contents 2</h2> </body> </html> ~~~ `time` 用法示例: ~~~ {% set now = time() %} ~~~ `date` 用法示例: ~~~ {{ date('Y年m月d日 H:i:s',1496222729) }} {# 输出:2017年5月31日 17:25:29 #} ~~~ `dump` 用法示例: ~~~ {% set data = ['one': 1, 'two': 2, 'three': 3] %} {{ dump(data) }} {# 输出:array(3) { ["one"]=> int(1) ["two"]=> int(2) ["three"]=> int(3) } #} ~~~ `slice` 用法示例: ~~~ {% set data = ['one': 1, 'two': 2, 'three': 3] %} {% set a = slice(data,0,1) %} {{ dump(a) }} <br/> {% set data = 'abcdef' %} {% set b = slice(data,0,2) %} {{ dump(b) }} 输出: array(1) { ["one"]=> int(1) } string(2) "ab" ~~~ ### [](https://github.com/jword/stardoc/blob/master/volt%E6%A8%A1%E6%9D%BF%E5%BC%95%E6%93%8E.md#%E6%A0%A1%E9%AA%8C%E6%96%B9%E6%B3%95)校验方法 | 方法名 | 作用 | | :-: | :-: | | defined | 检查变量是否被定义 | | empty | 检查变量是否为空(未定义、空字符串、空数组、0、null、false等均认为为空) | | even | 检查变量值是否是偶数 | | odd | 检查变量值是否是奇数 | | numeric | 检查变量值是否是数字 | | scalar | 检测变量是否是一个标量(标量变量是指那些包含了 integer、float、string 或 boolean的变量,而 array、object 和 resource 则不是标量。) | | iterable | 检查变量值是否可被迭代生成 | | divisibleby | 检查变量值是否可被整除 | | sameas | 检查变量值是否相同 | | type | 检查变量值是否是给定类型 | `defined` 用法示例: ~~~ {% if name is defined %} The name variable is defined {% endif %} ~~~ `empty` 用法示例: ~~~ {% if name is empty %} The name is null or isn't defined {% endif %} ~~~ `even` 用法示例: ~~~ {% for key, name in ['Voltron', 'Astroy Boy', 'Bender'] %} {% if key is even %} {{ name }} {% endif %} {% endfor %} ~~~ `odd` 用法示例: ~~~ {% for key, name in ['Voltron', 'Astroy Boy', 'Bender'] %} {% if key is odd %} {{ name }} {% endif %} {% endfor %} ~~~ `numeric` 用法示例: ~~~ {% for key, name in ['Voltron', 'Astroy Boy', 'third': 'Bender'] %} {% if key is numeric %} {{ name }} {% endif %} {% endfor %} ~~~ `scalar` 用法示例: 输入: ~~~ {% set data = 'a' %} {% if data is scalar %} {{ 'True' }} {% endif %} {% set data = ['a','b'] %} {% if data is not scalar %} {{ 'True' }} {% endif %} ~~~ 输出: ~~~ True True ~~~ `iterable` 用法示例: ~~~ {% set data = [1: 'Voltron', 2: 'Astroy Boy'] %} {% if data is iterable %} {% for value in data %} {{ value }} {% endfor %} {% endif %} ~~~ `divisibleby` 用法示例: ~~~ {% set data = 10 %} {% if data is divisibleby(5) %} 10 can divisible by 5 {% endif %} ~~~ `sameas` 用法示例: ~~~ {% set world = "hello" %} {% if world is sameas("hello") %} {{ "it's hello" }} {% endif %} ~~~ `type` 用法示例: ~~~ {% set external = false %} {% if external is type('boolean') %} {{ "external is false or true" }} {% endif %} ~~~ ### [](https://github.com/jword/stardoc/blob/master/volt%E6%A8%A1%E6%9D%BF%E5%BC%95%E6%93%8E.md#%E5%AE%8F%E5%AE%9A%E4%B9%89%E7%A6%81%E7%94%A8%E7%BB%93%E5%90%88%E7%89%87%E6%AE%B5%E4%BD%BF%E7%94%A8)宏定义(禁用/结合片段使用) 宏定义可以重用模板逻辑,和其它方法一样可以接收参数和返回值 ~~~ {# Macro "display a list of links to related topics" #} {%- macro related_bar(related_links) %} <ul> {%- for link in related_links %} <li> <a href="{{ url(link.url) }}" title="{{ link.title|striptags }}"> {{ link.text }} </a> </li> {%- endfor %} </ul> {%- endmacro %} {# Print related links #} {{ related_bar(links) }} {# Print related links again #} {{ related_bar(links) }} ~~~