SMARTY>嵌套的foreach循环>整体反击

时间:2012-05-30 21:04:21

标签: foreach nested smarty iteration counter

我有一个嵌套的聪明的foreach循环。 我试图在div 上获得顺序编号的输出(参见示例) 在内部数组上使用键或索引或.iteration不能按我想要的方式工作。 我可以看到发生了什么,但我想要一些保持整体运行计数的方法,而不是部分计数,这样可以在外循环的每个分支上保持重置。 我尝试过很多没有成功的事情。 有人可以帮忙吗?非常感谢。

{foreach from=$children item='child'}

{if $child.show_in_menu}


{* loop through grandchildren *}

{foreach from=$child item='grandchild'  name='grandchildrenpages' key=k}

{if $grandchild.show_in_menu}


<div class="view-{$k}"></div>

{/if}
{/if}
{/foreach}
{/if}
{/foreach}

所需的输出

<div class="view-1"></div>
<div class="view-2"></div>
<div class="view-3"></div>
<div class="view-4"></div>
<div class="view-5"></div>
<div class="view-6"></div>
<div class="view-7"></div>
<div class="view-8"></div>

Currentoutput

<div class="view-0"></div>
<div class="view-1"></div>
<div class="view-2"></div>
<div class="view-1"></div>
<div class="view-2"></div>
<div class="view-5"></div>
<div class="view-6"></div>
<div class="view-7"></div>

1 个答案:

答案 0 :(得分:0)

使用{counter}:

{foreach from=$children item='child'}
        {if $child.show_in_menu}
    {foreach from=$child item='grandchild'  name='grandchildrenpages' key=k}
                {if $grandchild.show_in_menu}
        <div class="view-{counter}"></div>
                {/if}
    {/foreach}
        {/if}
{/foreach}

(顺便说一句,你的例子有一个{/ if}超过需要,我想这是一个错字