2012-05-30 98 views
0

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

{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> 
+0

你可以给数组格式吗? – Micku

回答

0

使用{}柜台:

{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}超过需要,我猜这是一个输入错误

+0

感谢periklis,我对解决方案的简单性感到有些尴尬!为了解决这个问题,我尝试并实现了一个{counter},但是错误地在循环外部设置了一个计数器,并为其指定了一个变量,并试图在内部调用它。基本上我误解了如何使用它。额外的{/ if}被错误地留下,对不起,我试图从真实生活代码中获取所有不必要的细节,以避免混淆,但不幸的是将其留在了。再次感谢 - 最有帮助。 – naturelab