我想知道是否可以使用Smarty 2做类似于for循环的事情。
我想有这样的事情:
<select>
{for $i from 1950 to 2000 }
<option value="{$i}">{$i}</option>
{/for}
</select>
我应该使用什么功能?
答案 0 :(得分:5)
顺便说一下:检查{html_options}功能:html_options docs
答案 1 :(得分:1)
您可以使用PHP的range函数:
<select>
{foreach item=i from=1950|@range:2000}
<option value="{$i}">{$i}</option>
{/foreach}
</select>
答案 2 :(得分:0)
这是一个老问题,已经有一个可接受的答案,但是答案基本上只是一个链接。我将其发布为更完整的答案,以避免将来的访问者不得不搜寻文档来查找相关示例。
在 Smarty 2 中,使用{section}
标签实现了循环,该标签涵盖了广泛的用例。要编写等效于PHP for()
循环的代码,请使用以下语法:
<select>
{section name="i" start=1950 loop=2001}
<option value="{$smarty.section.i.index}">{$smarty.section.i.index}</option>
{/section}
</select>
请注意,loop
属性是指Smarty跳出循环的数字,因此它需要比要迭代的最终数字高1。
附录:
尽管这与问题(与Smarty 2有关)没有直接关系,但值得注意的是 Smarty 3 引入了{for}
标签,因此您现在可以执行以下操作,即简单得多:
<select>
{for $i=1950 to 2000}
<option value="{$i}">{$i}</option>
{/for}
</select>