smarty注释:模板中的注释是星号开头,然后外面包含着 定界符, 就像这样:{* 注释*};
smarty变量:模板变量以美元符号$开头,由字母、数组和下划线组成。 变量可以引用数字索引或非数字索引的数组,对象的属性和方法等。
{$foo} <-- 显示简单的变量 (非数组/对象)
{$foo[4]} <-- 在0开始索引的数组中显示第五个元素
{$foo.bar} <-- 显示"bar"下标指向的数组值,等同于PHP的$foo['bar']
{$foo.$bar} <-- 显示以变量$bar值作为下标指向的数组值,等同于PHP的$foo[$bar]
{$foo->bar} <-- 显示对象属性 "bar"
{$foo->bar()} <-- 显示对象成员方法"bar"的返回
{#foo#} <-- 显示变量配置文件内的变量"foo"
{$smarty.config.foo} <-- 等同于{#foo#}
{$foo[bar]} <-- 仅在循环的语法内可用,见{section}
{assign var=foo value='baa'}{$foo} <-- 显示"baa", 见{assign}
更多合成变量的方式:
{$foo.bar.baz}
{$foo.$bar.$baz}
{$foo[4].baz}
{$foo[4].$baz}
{$foo.bar.baz[4]}
{$foo->bar($baz,2,$bar)} <-- 传递参数
{"foo"} <-- 静态值
{* 显示服务器的环境变量"SERVER_NAME" ($_SERVER['SERVER_NAME'])*}
{$smarty.server.SERVER_NAME}
数学运算和嵌入标签:
{$x+$y} // 显示x加y的和
{assign var=foo value=$x+$y} // 和用于赋值
{$foo[$x+3]} // 作为下标使用
{$foo={counter}+3} // 标签内的标签
{$foo="this is message {counter}"} // 在双引号内的标签
定义数组:
{assign var=foo value=[1,2,3]}
{assign var=foo value=['y'=>'yellow','b'=>'blue']}
{assign var=foo value=[1,[9,8],3]} // 可嵌套
缩写方式:
{$foo=$bar+2}
{$foo = strlen($bar)} // 函数赋值
{$foo = myfunct( ($x+$y)*3 )} // 函数参数
{$foo.bar=1} // 赋值给特定的数组元素
{$foo.bar.baz=1}
{$foo[]=1} // 附加到数组
Smarty 点号语法:
{$foo.a.b.c} => $foo['a']['b']['c']
{$foo.a.$b.c} => $foo['a'][$b]['c'] // 变量下标
{$foo.a.{$b+4}.c} => $foo['a'][$b+4]['c'] // 表达式下标
{$foo.a.{$b.c}} => $foo['a'][$b['c']] // 嵌套下标
类似PHP的语法,另一种点号的语法:
{$foo[1]} // 一般的
{$foo['bar']}
{$foo['bar'][1]}
{$foo[$x+$x]} // 下标可以是各种表达式
{$foo[$bar[1]]} // 嵌套下标
{$foo[section_name]} // smarty {section} 存取, 非数组存取!
变量构造变量:
$foo // 一般的变量
$foo_{$bar} // 变量名包含了其他变量
$foo_{$x+$y} // 变量名包含了表达式
$foo_{$bar}_buh_{$blar} // 更复杂的
{$foo_{$x}} // 如$x = 1,那么将显示$foo_1的值
对象链:
{$object->method1($x)->method2($y)}
PHP函数直接使用:
{time()}