Как мне создать цикл for в Smarty 2? - PullRequest
1 голос
/ 16 апреля 2011

Хотелось бы узнать, возможно ли сделать что-то похожее на цикл for с помощью Smarty 2.

Я бы хотел что-то вроде этого:

<select>
{for $i from 1950 to 2000 }
   <option value="{$i}">{$i}</option>
{/for}
</select>

Какую функцию использовать, если она есть?

Ответы [ 3 ]

5 голосов
/ 16 апреля 2011

Попробуйте {section}, как описано в smarty docs

Кстати: проверьте функцию {html_options}: html_options docs

1 голос
/ 18 октября 2013

Вы можете использовать функцию PHP range :

<select>
    {foreach item=i from=1950|@range:2000}
        <option value="{$i}">{$i}</option>
    {/foreach}
</select>
0 голосов
/ 20 июня 2019

Это старый вопрос, на который уже есть принятый ответ, но в основном это была просто ссылка.Я разместил это в качестве более полного ответа, чтобы избежать того, что будущим посетителям придется перелистывать документы, чтобы найти соответствующий пример.


In 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 больше, чем последнее число, которое вы хотите повторить.


ADDENDUM: Хотя это не имеет прямого отношения к вопросу (касающемуся Smarty 2), оноСтоит отметить, что Smarty 3 ввел тег {for}, поэтому теперь вы можете делать следующее, что намного проще:

<select>
{for $i=1950 to 2000}
   <option value="{$i}">{$i}</option>
{/for}
</select>
...