聪明的变量动态名称

时间:2013-09-23 22:44:12

标签: templates smarty variable-assignment template-engine

我正在学习两个月的聪明才智,我发现自己处在一个问题面前。

我正在创建一个动态菜单,从该文件中名为submenu.conf的文件中读取配置:

tot_sub_menu_2 = "2"
text_sub_menu_2_1 = "Home"
text_sub_menu_2_2 = "about"
我的应用程序中的

tpl文件我希望他能以这种方式动态创建菜单:

{for $foo=1 to #tot_sub_menu_2#}

<li><a href="{#text_sub_menu_2_.{$foo}}">{#text_sub_menu_2_.{$foo}}</a></li>
{/for}

我想采用动态参数text_sub_menu_2_1,第二个循环变为text_sub_menu_2_2等。

有人知道如何帮助我?

1 个答案:

答案 0 :(得分:0)

我尚未测试,但您可以尝试使用{counter}

{for $foo=1 to #tot_sub_menu_2#}
{* initialize the count *}
{counter start=0 skip=1}
<li><a href="{#text_sub_menu_2_.{counter}}">{#text_sub_menu_2_.{counter}}</a></li>

否则您可以使用@iteration属性。见http://www.smarty.net/docs/en/language.function.foreach.tpl#foreach.property.iteration

  

iteration包含当前循环迭代并始终​​从   一,不像索引。 每次迭代时增加1

{foreach from=$new_products item='product' name='newProducts'} 
// Do somthing 

//Here i want to increment {$count} if it's lower than 3 or set to 1 if higher than 3 
{if $product@iteration <= 3}{$count =  $product@iteration}{else}{$count = 1}{/if} 

{/foreach}