ECJiaWiki:Smarty:基本语法-双引号中嵌入变量

来自ECJiaWiki
跳转至: 导航搜索
ECJia到家Smarty模版手册导航
为什么选择Smarty?
基本语法-变量
基本语法-函数
基本语法-属性
基本语法-双引号中嵌入变量
基本语法-数学计算
从PHP赋值的变量
Smarty保留变量
变量修饰器
内置函数
自定义函数

基本语法-双引号中嵌入变量

  • Smarty可以识别出在双引号中嵌套的 变量值,这些变量名称必须只包括 字母、数字和下划线。 参见命名规则。
  • 另外,带有其他字符的,如点号(.)或者 $object->reference形式的变量,必须用`单引号`括起来。
  • Smarty3中允许在双引号中嵌入Smarty的标签并运行。如果你需要在双引号的变量上使用修饰器、插件或者PHP函数等,这是非常有用的。

例子一

{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区块函数

例子二

{* 将使用$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"}