首页 目录 View on GitHub

the Leancloud framework G

NSmarty - 基本语法

基本语法

注释

{* wow such a doge *}

输出变量、赋值

{$date='2112-09-03'} 今天是:{$date}!也可以写成:{$date|replace:'-':'/'}! 输出结果: 今天是:2112-09-03!也可以写成:2112/09/03!

输出数组和对象(nsmarty不区分数组和对象,数字可以理解为数字索引的对象)

{$people=[name=> '八云紫']} {$people.age=17} {* 使用“点” 和 *} {$people['gender']='少女'} {* 用中括号 (是一样的 但中括号里面可以有特殊字符,例如空格) *} 她是{$people.gender}{$people.name},今年{$people['age']}岁。 输出结果: 她是少女八云紫,今年17岁。

分支

{$selectedPlayer=0} {if $selectedPlayer eq 0} 你选了灵梦 {elseif $selectedPlayer eq 1} 你选了魔理沙 {elseif $selectedPlayer eq 2} 你选了冴月麟 {/if} 输出结果: 你选了灵梦

循环

foreach
<table style="width:100%;"><tr> {$colors=[honoka=>'#D98545', eli=>'#FEF0B5',kotori=>'#C3A48A',umi=>'#7171A6', rin=>'#F08C6C',maki=>'#DD6467',nozomi=>'#685A8A',hanayo=>'#FBE48B',nico=>'#5B5B5B']} {foreach $colors as $name => $code} <td style="background-color:{$code};">{$name}</td> {/foreach} </tr></table> 输出结果:
honoka eli kotori umi rin maki nozomi hanayo nico
for A to B
{$number=[1,2,3,4,5,6,7,8,'⑨']} {for $i=0 to $number|count} {$i}: {$number[$i]}、 {/for} 输出结果: 0: 1、 1: 2、 2: 3、 3: 4、 4: 5、 5: 6、 6: 7、 7: 8、 8: ⑨、
---
{for $i=0 to 10} {$i}、 {/for} 输出结果: 0、1、2、3、4、5、6、7、8、9、10、
循环过程中可以用{break}和{continue}哦~

过滤器

输出变量时使用过滤器:如上面的{$date|replace:'-':'/'}
完整的过滤器列表看下面的“内置扩展”

有时需要连续使用同一个过滤器,可以使用setfilter: {setfilter escape} 1: {$foo} 2: {$bar} {/setfilter}

函数

可以在模板中使用提前定义好的函数实现简单的逻辑:,函数的调用方式是: {inline_function_name $var1 $var2 var_name=$var_value} {block_function_name $var1 $var2 var_name=$var_value} bla bla... {/block_function_name} 一个inline_function不可以用block_function的方式调用,下面的写法是错的(反之亦然) {inline_function_name $params}{/inline_function_name} 一个函数至少有一个参数,否则无法调用。 为什么?

引用文件

{include file="./file_in_same_folder.tpl"} {include file="../file_in_parent_folder.tpl"} {include file="/absolute/file/path/file.tpl"} {include file="$var_path/file.tpl"} {include file="relative/to/template/root/file.tpl"} 以上是所有可能的引用文件的方式
  • 由./或../开头:相对于写这一行的文件的路径
  • 由/开头:文件系统绝对路径
  • 其他开头:从模板目录中找
使用变量时,先展开变量内容,再根据上面的规则找到模板
模板目录可以通过配置文件修改(不建议)

字面值

很多时候,尤其是写script标签的的时候,会需要用很多大括号,但不想它们被转义,那么可以使用字面值: <script type="text/javascript">{literal} var json = {Flandre:'Scarlet'}; {/literal}</script>