Как проверить итерацию в smarty? - PullRequest
8 голосов
/ 05 марта 2012

Как я могу проверить текущую итерацию для foreach и что-то сделать?

{foreach $new_products as $product name=foo}
    {if $smarty.foreach.foo.iteration=5}
        Do it!
    {/if}
{/foreach}

Это всегда возврат не проверен

Ответы [ 3 ]

10 голосов
/ 05 марта 2012

Я думаю, вы должны сделать {if $smarty.foreach.foo.iteration == 5} (обратите внимание на ==).

6 голосов
/ 23 сентября 2014

Для этого есть альтернативная (я думаю, более новая) техника.Пример из Smarty docs наглядно демонстрирует это:

{foreach $items as $i}
  {if $i@index eq 3}
     {* put empty table row *}
     <tr><td>nbsp;</td></tr>
  {/if}
  <tr><td>{$i.label}</td></tr>
{/foreach}

Обратите внимание, что индекс начинается с нуля, поэтому индекс 3 является 4-й итерацией.

2 голосов
/ 16 августа 2017

Для Smarty 3 вы можете использовать свойство @ iteration

{foreach $new_products as $product}
    {if $product@iteration == 5}
        Do it!
    {/if}
{/foreach}
...