Цикл Smarty Foreach, который добавляет +1 к классам, которые он выводит - PullRequest
0 голосов
/ 25 июня 2018

Я работаю с умом, и у меня возникают проблемы с добавлением +1 каждый раз, когда он проходит через цикл foreach, вместо этого он добавляет ко всем им одинаковое число. есть ли в любом случае добавить счетчик в smarty, который добавляет +1 для каждого класса, который он выводит, чтобы все классы отличались друг от друга.

 $title is defind as 0 in another file

 {foreach from=$articles item=article}
        <h2 class="title{$title + 1}">{$article[0]}</h2>
        <p class="article">{$article[1]}</p>
        <img class="image" src="{$article[2]}" alt="foobar" />
 {/foreach}

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Ответ выше хорош, но если по каким-то причинам вам придется использовать свой подход, вам нужно переопределять переменную $title во время каждой итерации, потому что теперь ее значение каждый раз равно 0 до итерации. Так что это будет что-то вроде

{foreach from=$articles item=article}
    {assign var='title' value=$title + 1}
    <h2 class="title{$title}">{$article[0]}</h2>
    <p class="article">{$article[1]}</p>
    <img class="image" src="{$article[2]}" alt="foobar" />
{/foreach}
0 голосов
/ 25 июня 2018

вы можете использовать пару ключ / значение

Использовать ключ вместо счетчика.Это был бы правильный путь.

{foreach from=$myArray key=k item=v}
     <li>{$k}: {$v}</li>
 {/foreach}

Здесь вы можете включить ключ, и это естественный счетчик для Smarty.Теперь эта переменная ключа будет естественным образом перемещаться с каждым циклом, дающим вам доступ к счетчику.Какой из них вы можете сделать математику, если вам это нужно.В вашем коде вы всегда добавляете 1, и это не будет двигаться.

Подробнее об этом здесь https://www.smarty.net/docsv2/en/language.function.foreach.tpl

...