Nasıl yinelemeli yuva bilmiş {foreach} döngüler hala kullanmak için güçlü olmak yok iken {$ smarty.foreach. .first / Son}?

1 Cevap php

Ben iç içe diziler ile temsil hiyerarşik veri üzerinde döngü ediyorum hangi bir Smarty şablon dosyası var. Alt veri ana veri tam olarak aynı şekilde temsil yüzden bu işlemek için ardışık {include} Smarty şablon isteniyor:

Source of "my.tpl":

{foreach from=$children item="child" name="childrenLoop"}
    {* display stuff here *}
    {if $smarty.foreach.childrenLoop.last}
        {* do something special here when it is the last item *}
    {/if}

    {assign var="grandChildren" value=$child->getChildren()}
    {if $grandChildren|@count > 0}
        {include file="my.tpl" children=$grandChildren}
    {/if}
 {/foreach}

Benim sorunum {include} yürütülmesi tamamlandığında, $smarty.foreach.childrenLoop.* {include}'s döngü değil, akım döngüsü hakkında bana söyler olmasıdır. Iç döngü 10 öğeler vardı ve dış döngü 5 varsa ben değil 5 değil, iç döngü çıktığınızda Yani, {$smarty.foreach.childrenLoop.total} 10 olacaktır. Söylemeye gerek yok, bu benim çıkış berbat ediyor.

Ben dahil tarafından birlikte geçti bir değere sahip döngü suffixing bu soruna olsun diye düşündüm. Ben doğru döngü isim mümkün görünmektedir:

{foreach from=$children item="child" name="childrenLoop_`$suffix`"}

... Ama onun özelliklerine erişmek için nasıl anlamaya olamaz ve Smarty manuel yararlı değildir:

{$smarty.foreach.childrenLoop_$suffix.total} {* NOPE! *}
{$smarty.foreach[childrenLoop_$suffix].total} {* NOPE! *}

Ben burada ne yapabilirim?

1 Cevap

Belki denemek

{assign var="chSuffix" value="childrenLoop_$suffix"}
{foreach from=$children item="child" name="$chSuffix"}
    {$smarty.foreach.$chSuffix.total}
{/foreach}