{call}
{call}
用于调用通过 {function}
标签定义的模板函数,就像插件函数一样。
注意
模板函数的定义是全局的。由于 Smarty 编译器是单次编译器,必须使用
{call}
标签才能从给定的模板外部调用模板函数。否则可以直接在模板中将函数用作{funcname ...}
。
-
{call}
标签必须具有name
属性,其中包含模板函数的名称。 -
变量的值可以用作 属性 传递给模板函数。
属性
属性名称 | 是否需要 | 说明 |
---|---|---|
name | 是 | 模板函数名称 |
assign | 否 | 将被调用的模板函数的输出分配到的变量名称 |
[var ...] | 否 | 传递给模板函数的局部变量 |
选项标志
名称 | 说明 |
---|---|
nocache | 以无缓存模式调用模板函数 |
示例
{* define the function *}
{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}
{* create an array to demonstrate *}
{$menu = ['item1','item2','item3' => ['item3-1','item3-2','item3-3' =>
['item3-3-1','item3-3-2']],'item4']}
{* run the array through the function *}
{call name=menu data=$menu}
{call menu data=$menu} {* short-hand *}
将生成以下输出
另请参阅 {function}
。