【问题标题】:SMARTY > Nested foreach loop > Overall counterSMARTY > 嵌套 foreach 循环 > 总计数器
【发布时间】:2012-05-30 21:04:20
【问题描述】:

我有一个嵌套的 smarty 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>

电流输出

<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>

【问题讨论】:

    标签: foreach nested smarty iteration counter


    【解决方案1】:

    使用 {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},我想这是一个错字

    【讨论】:

    • 感谢 periklis,我对解决方案的简单性感到有些尴尬!我确实尝试实现了一个 {counter} 来解决这个问题,但是错误地在循环之外设置了计数器,给它分配了一个变量,试图在里面调用它。基本上我误解了如何使用它。额外的 {/if} 被错误地留下了,对不起,我试图从现实生活中的代码中获取所有不必要的细节,以避免混淆,但不幸的是留下了这个。再次感谢 - 非常有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多