模板语法
为简化写法,模板语法设计原则上不使用单引号、双引号、逗号等,元素和元素之间一律使用空格,每个标签使用{和}包括起来,支持标签中多层嵌套标签
如果遇到含有空格的元素,可以使用单引号或双引号包括起来,比如:{date 'Y-m-d h:i:s' {$time}},否则会被当做不同元素;空值也可以使用引号,如:''
包含标签
用来包含其他模板文件,语法:{inc 模块.控制器.模板},模块和控制器可省略,省略则代表当前所处环境
{inc home.index.head}
{inc index.head}
{inc head}
常量标签
输出PHP常量或配置,语法:{常量},常量必须大写,模块常量和全局常量写法一致,优先使用模块常量
{CHARSET}
{DATABASE.user} //数组常量用节点式写法
{DATABASE.{$k}} //嵌套变量
变量标签
输出变量,语法:{$变量},必须以$开头。系统环境变量为:$_ENV
{$test_name}
{$_GET.title}
{$_COOKIE.name}
{$_SESSION.user.id}
{$_ENV.var.page} //环境变量['var']['page']
{$test.{$k}.{$v}} //嵌套变量
语言标签
用于多语言环境,语法:{@语言标签},必须以@开头,语言标签采用节点式写法,分别表示模块.语言文件.键
{@boa.error.100}
{@home.index.title}
{@home.index.status.0}
{@home.error.{$code}} //嵌套变量
条件标签
进行条件判断,语法:{if 条件表达式}...{elseif 条件表达式}...{else}...{/if},{elseif}和{else}可选,条件表达式支持标签
支持的逻辑运算符:
- 逻辑与:&& 或 and
- 逻辑或:|| 或 or
- 优先级:()
支持的比较运算符:
- 恒等于:===
- 非恒等于:!==
- 不等于:!= 或 neq
- 小于等于:<= 或 le
- 大于等于:>= 或 ge
- 等于:== 或 eq
- 大于:> 或 gt
- 小于:< 或 lt
{if {date Y-m-d} == {$d} or ($a > 1 && $b == 2)}
...
{elseif {date Y-m-d} == {$b} || $c == 3}
...
{else}
...
{/if}
循环标签
遍历一组数据,语法:{list 数据 键 值},键可选,数据支持标签
{$i++}
{list $arr $k $v}
{$i++}:{$k} = {$v} <br>
{/list}
数据标签
获取模型中的数据,语法:{$结果变量 模块.模型文件.方法 参数1 参数2 ...},获得的数据赋值给结果变量,方法的参数可选,并支持标签
{$cat home.category.list}
{$con home.news.content 1 {$a} world}
可以使用循环标签{list}展示获得的数据
函数标签
使用PHP函数,语法:{函数名 参数1 参数2 ...},参数可选,可以使用true/false/null(空值使用引号 ''),并支持标签
{date Y-m-d {$time}}