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! *}
什麼我可以在這裏做嗎?
啊,我沒有考慮到保存整個命名約定到一個變量。 我不得不做一個小的改正(正確的語法是{assign var =「chSuffix」value =「childrenLoop_ $ suffix」}),但它工作!謝謝!!! 你能否用正確的語法編輯你的文章? –