2010-01-12 8 views
1

我有一個Smarty模板文件,其中我循環嵌套數組表示的分層數據。孩子的數據準確表示方式與父母相同的數據,所以我想遞歸{include} Smarty模板來呈現這個:

源「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} 

我的問題當{include}完成執行時,$smarty.foreach.childrenLoop.*告訴我有關{include}'s循環,而不是當前循環。因此,如果內部循環有10項,外部循環有5項,當我退出內部循環而不是5時,{$smarty.foreach.childrenLoop.total}將是10。不用說,這是搞亂了我的輸出。

我想我可以解決這個問題,通過後綴與包含傳遞的值的循環。我似乎能夠正確地命名的循環:

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

...但我無法弄清楚如何訪問它的屬性,而Smarty的手冊是沒有幫助的:

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

什麼我可以在這裏做嗎?

回答

1

也許嘗試

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

啊,我沒有考慮到保存整個命名約定到一個變量。 我不得不做一個小的改正(正確的語法是{assign var =「chSuffix」value =「childrenLoop_ $ suffix」}),但它工作!謝謝!!! 你能否用正確的語法編輯你的文章? –