智能表达式$ entry @ key如何工作?

时间:2013-06-16 21:08:03

标签: php smarty

在阅读内置{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

有人可以解释一下它是如何工作的吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

$variable@keya {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之类的内容。