Smarty 是什么?
为什么要使用它?
用例和工作流程
语法比较
模板继承
最佳实践
速成课程
{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}