{assign}, {$var=...}
{assign} 或 {$var=...} 在模板执行过程中用于赋值模板变量。
{assign} 语法的属性
| 属性名称 | 是否必需 | 描述 |
|---|---|---|
| var | 被赋值的变量名称 | |
| value | 被赋予的值 | |
| scope | (可选) | 被赋值变量的范围:'parent','root' 或 'global' |
{$var=...} 语法的属性
| 属性名称 | 是否必需 | 描述 |
|---|---|---|
| scope | (可选) | 被赋值变量的范围:'parent','root' 或 'global' |
选项标志
| 名称 | 描述 |
|---|---|
| nocache | 使用 'nocache' 属性赋值变量 |
注意
在模板中赋值变量本质上是将应用逻辑放入表示层,这可能更好地在 PHP 中处理。请酌情使用。
示例
{assign var="name" value="Bob"} {* 或者 *}
{assign "name" "Bob"} {* 简写,或者 *}
{$name='Bob'}
$name 的值是 {$name}.
上述例子将输出:
$name 的值是 Bob.
{assign var="name" value="Bob" nocache} {* 或者 *}
{assign "name" "Bob" nocache} {* 简写,或者 *}
{$name='Bob' nocache}
$name 的值是 {$name}.
上述例子将输出:
$name 的值是 Bob.
{assign var=running_total value=$running_total+$some_array[$row].some_value} {* 或者 *}
{$running_total=$running_total+$some_array[row].some_value}
在包含的模板中赋值的变量将在包含模板中可见。
{include file="sub_template.tpl"}
{* 显示在 sub_template 中赋值的变量 *}
{$foo}<br>
上述模板包含了下面的 sub_template.tpl 示例:
{* foo 将在包含模板中也被知道 *}
{assign var="foo" value="something" scope=parent}
{$foo="something" scope=parent}
{* bar 只在包含模板中本地赋值 *}
{assign var="bar" value="value"} {* 或者 *}
{$var="value"}
你可以将一个变量赋值给当前根树的根。所有使用相同根树的模板都可以看到该变量。
{assign var=foo value="bar" scope="root"}
一个全局变量可以被所有模板看到。
{assign var=foo value="bar" scope="global"} {* 或者 *}
{assign "foo" "bar" scope="global"} {* 简写,或者 *}
{$foo="bar" scope="global"}
要从 php 脚本访问 {assign} 变量,使用
getTemplateVars()。
下面是创建变量 $foo 的模板。
{assign var="foo" value="Smarty"} {* 或者 *}
{$foo="Smarty"}
模板变量只在模板执行后/期间可用,如下面的脚本。
<?php
// 这将输出 nothing,因为模板尚未执行
echo $smarty->getTemplateVars('foo');
// 将模板获取到一个变量
$whole_page = $smarty->fetch('index.tpl');
// 这将输出 'smarty',因为模板已经执行
echo $smarty->getTemplateVars('foo');
$smarty->assign('foo','Even smarter');
// 这将输出 'Even smarter'
echo $smarty->getTemplateVars('foo');
以下函数也可以可选地赋值模板变量:{capture},
{include},
{insert},
{counter},
{cycle},
{eval},
{fetch},
{math} 和
{textformat}.
另请参见 {append},
assign() 和
getTemplateVars().