Smarty 图标

你可以按照商标通知使用 Smarty 徽标。

Smarty Template Engine Smarty Template Engine

如需赞助、广告、新闻或其他询问,请联系我们

使用 Smarty 的网站

广告

{assign}

{assign} 用于在模板执行期间分配模板变量

注意

在模板中分配变量实际上是将应用程序逻辑放入演示文稿中,这可能在 PHP 中得到更好地处理。自行决定使用。

注意

另请参阅分配模板变量的 简短形式方法。

属性

属性名称 类型 必需 默认值 说明
var 字符串 不可用 正在分配的变量的名称
value 字符串 不可用 正在分配的值
scope 字符串 不可用 分配变量的范围:“父级”、“根”或“全局”

选项标志

名称 说明
nocache 使用“nocache”属性分配变量

示例 7.8. {assign}

{assign var="name" value="Bob"}
{assign "name" "Bob"} {* short-hand *}

The value of $name is {$name}.

  

以上示例将输出

The value of $name is Bob.

  

示例 7.9. {assign} 作为 nocache 变量

{assign var="name" value="Bob" nocache}
{assign "name" "Bob" nocache} {* short-hand *}

The value of $name is {$name}.

  

以上示例将输出

The value of $name is Bob.

  

示例 7.10. {assign} 带有一些数学运算

{assign var=running_total value=$running_total+$some_array[$row].some_value}

  

示例 7.11. {assign} 在调用模板的范围内

在包含的模板中分配的变量将在包括模板中可见。

{include file="sub_template.tpl"}
...
{* display variable assigned in sub_template *}
{$foo}<br>
...

  

以上模板包括以下示例 sub_template.tpl

...
{* foo will be known also in the including template *}
{assign var="foo" value="something" scope=parent}
{* bar is assigned only local in the including template *}
{assign var="bar" value="value"}
...


示例 7.12. {assign} 向当前范围树分配变量

你可以将变量分配给当前根树的根部。使用相同根树的所有模板都可以看见该变量。

{assign var=foo value="bar" scope="root"}

  

示例 7.13. {assign} 全局变量

所有模板都可以看见全局变量。

{assign var=foo value="bar" scope="global"}
{assign "foo" "bar" scope="global"} {* short-hand *}

  

示例 7.14. 从 PHP 脚本中访问 {assign} 变量

若要从 PHP 脚本中访问 {assign} 变量,请使用 getTemplateVars()。以下是创建变量 $foo 的模板。

{assign var="foo" value="Smarty"}

只有在/期间模板执行之后/期间才可以使用模板变量,就像在以下脚本中一样。

<?php

// this will output nothing as the template has not been executed
echo $smarty->getTemplateVars('foo');

// fetch the template to a variable
$whole_page = $smarty->fetch('index.tpl');

// this will output 'smarty' as the template has been executed
echo $smarty->getTemplateVars('foo');

$smarty->assign('foo','Even smarter');

// this will output 'Even smarter'
echo $smarty->getTemplateVars('foo');

?>


以下函数还可以可选地为模板变量赋值。

{capture}{include}{include_php}{insert}{counter}{cycle}{eval}{fetch}{math}{textformat}

另请参阅{$var=...}assign()getTemplateVars()