What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
Example 3.5. 例子
{func var="test $foo test"} // 识别变量 $foo {func var="test $foo_bar test"} // 识别变量 $foo_bar {func var="test `$foo[0]` test"} // 识别变量 $foo[0] {func var="test `$foo[bar]` test"} // 识别变量 $foo[bar] {func var="test $foo.bar test"} // 识别变量 $foo (不是 $foo.bar) {func var="test `$foo.bar` test"} // 识别变量 $foo.bar {func var="test `$foo.bar` test"|escape} // 引号外的修饰器! {func var="test {$foo|escape} test"} // 引号内的修饰器! {func var="test {time()} test"} // PHP函数结果 {func var="test {counter} test"} // 插件的结果 {func var="variable foo is {if !$foo}not {/if} defined"} // Smarty区块函数
Example 3.6. 例子
{* 将使用$tpl_name的值 *} {include file="subdir/$tpl_name.tpl"} {* 不使用$tpl_name的值 *} {include file='subdir/$tpl_name.tpl'} // 必须用双引号才能用变量值! {* 当变量包含了点号“.”,必须用单引号括起来 *} {cycle values="one,two,`$smarty.config.myval`"} {* 当变量包含了点号“.”,必须用单引号括起来 *} {include file="`$module.contact`.tpl"} {* 点号后面跟着变量 *} {include file="`$module.$view`.tpl"}
虽然Smarty能处理比较复杂的表达式和语法,但是最好保持模板语法的简洁, 把关注的焦点放在显示层面。如果你发现模板语法非常复杂,那么 最好把这些逻辑代码转移到插件或者修饰器上,用PHP代码进行编写。
参见字符转换
。