Chapter 7. 内置函数

Table of Contents

{$var=...}
{append}
{assign}
{block}
{call}
{capture}
{config_load}
{debug}
{extends}
{for}
{foreach},{foreachelse}
@index
@iteration
@first
@last
@show
@total
{break}
{continue}
{function}
{if},{elseif},{else}
{include}
{include_php}
{insert}
{ldelim},{rdelim}
{literal}
{nocache}
{php}
{section},{sectionelse}
.index
.index_prev
.index_next
.iteration
.first
.last
.rownum
.loop
.show
.total
{setfilter}
{strip}
{while}

Smarty自带了一些内置函数。 这些内置函数是Smarty模板引擎的组成部分。 它们会被编译到PHP代码中,以取得最高的性能。

你不能建立相同名称的自定义函数; 同时你也不需要修改这些内置函数。

少数的内置函数有assign属性, 可以将函数的结果赋值给模板变量,而不是输出; 效果如同 {assign}函数。

{$var=...}

{assign}函数的缩写。你可以在模板内对变量进行赋值,或者对数组元素进行赋值。

Note

在模板中进行赋值,从根本上讲还是将程序逻辑放到显示层来进行了,在PHP端进行此操作会更好。请自行考虑。

下面是该标签的属性:

属性:

参数名称 缩写 类型 必选参数 默认值 说明
scope n/a string No n/a 变量的作用范围: 'parent','root' 或 'global'

可选标记:

名称 说明
nocache 对赋值操作不进行缓存

Example 7.1. 简单赋值


{$name='Bob'}

The value of $name is {$name}.

  

输出:


The value of $name is Bob.

  

Example 7.2. 数学运算赋值


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

  

Example 7.3. 对数组元素赋值


{$user.name="Bob"}

  

Example 7.4. 对多维数组元素赋值


{$user.name.first="Bob"}

  

Example 7.5. 附加到数组


{$users[]="Bob"}

  

Example 7.6. 赋值的作用范围

在包含的模板内赋值的变量,在包含模板内可见。


{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 *}
{$foo="something" scope=parent}
{* bar is assigned only local in the including template *}
{$bar="value"}
...


参见{assign}{append}