在阅读内置{call} -function(link to the specific documentation page)的智能文档时,我看到了这段代码片段(这是文档的一个示例):
{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}
我对表达式
感到困惑$entry@key
有人可以解释一下它是如何工作的吗?
谢谢!
答案 0 :(得分:0)
$variable@key
是a {foreach}
block中可用的特殊语法,它将循环本身的“属性”与保存循环当前值的变量相关联。
在Smarty 2中,您必须说$smarty.foreach.name_of_foreach_block.name_of_property
,而Smarty 3将此简化为$variable_from_loop@property
。
在给出的示例中,您还可以使用{if $entry@iteration is odd}class="odd"{else}class="even"}
或更复杂版本as seen in the manual page之类的内容。