Skip to content

{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().