我想知道是否可以使用 Smarty 2 执行类似于 for 循环的操作。
我想要这样的东西:
<select>
{for $i from 1950 to 2000 }
<option value="{$i}">{$i}</option>
{/for}
</select>
如果有的话,我应该使用什么功能?
我想知道是否可以使用 Smarty 2 执行类似于 for 循环的操作。
我想要这样的东西:
<select>
{for $i from 1950 to 2000 }
<option value="{$i}">{$i}</option>
{/for}
</select>
如果有的话,我应该使用什么功能?
按照smarty 文档中的描述尝试 {section}
顺便说一句:检查 {html_options} 功能:html_options docs
你可以使用 PHP 的range函数:
<select>
{foreach item=i from=1950|@range:2000}
<option value="{$i}">{$i}</option>
{/foreach}
</select>
这是一个老问题,已经有一个公认的答案,但答案基本上只是一个链接。我已将此作为更完整的答案发布,以避免未来的访问者不得不搜索文档以找到相关示例。
在Smarty 2中,循环是使用{section}
标签实现的,它涵盖了相当广泛的用例。要编写等效的 PHPfor()
循环,使用以下语法:
<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>