{call}
{call}用于调用由{function}标签定义的模板函数,就像插件函数一样。
注意
模板函数是全局定义的。由于 Smarty 编译器是单通道编译器,
{call}标签必须用于调用从给定模板外部定义的模板函数。否则,你可以直接在模板中使用{funcname ...}。
-
{call}标签必须有name属性,该属性包含模板函数的名称。 -
可以将变量的值作为属性传递给模板函数。
属性
| 属性名称 | 是否必须 | 描述 |
|---|---|---|
| name | 是 | 模板函数的名称 |
| assign | 否 | 被调用的模板函数的输出将被赋值给的变量名称 |
| [var ...] | 否 | 传递给模板函数的局部变量 |
选项标志
| 名称 | 描述 |
|---|---|
| nocache | 以 nocache 模式调用模板函数 |
示例
{* 定义函数 *}
{function name=menu level=0}
<ul class="level{$level}">
{foreach $data as $entry}
{if is_array($entry)}
<li>{$entry@key}</li>
{call name=menu data=$entry level=$level+1}
{else}
<li>{$entry}</li>
{/if}
{/foreach}
</ul>
{/function}
{* 创建一个数组进行演示 *}
{$menu = ['item1','item2','item3' => ['item3-1','item3-2','item3-3' =>
['item3-3-1','item3-3-2']],'item4']}
{* 通过函数运行数组 *}
{call name=menu data=$menu}
{call menu data=$menu} {* 简写 *}
将生成以下输出
* item1
* item2
* item3
o item3-1
o item3-2
o item3-3
+ item3-3-1
+ item3-3-2
* item4
参见 {function}.