【问题标题】:Using "cycle" in smarty template system?在 smarty 模板系统中使用“循环”?
【发布时间】:2014-10-24 22:17:01
【问题描述】:

这是我当前的代码:

{foreach from=$items item=item name=utable}

{foreach from=$item.terms item=tmp name=titem}
<tr class="{cycle values="odd,even"}">

REMOVED UNNECESSARY CODE FROM HERE

{/foreach}
{/foreach}

oddeven 值对于 tr 类的旋转正确。

但是,轮换不会随着每个新表重新开始。例如,我希望每个表的第一个 tr 具有 odd 类,但如果最后一个表以 odd 结尾,则下一个继续以 even 开头。

有没有办法让它循环在每个表的末尾停止并在下一个重新开始?

【问题讨论】:

    标签: php smarty


    【解决方案1】:

    你需要使用reset属性和print

    PHP 数据示例:

    $data = [1 => [2,3,51], 2 => [5,6,1], 4 => [1,2,21]];
    $smarty->assign('tables',$data);
    

    Smarty 文件示例:

    <style>
        tr.odd {
            background: red;
        }
        tr.even {
            background: #fff;
        }
        table {
            margin: 50px 0;
        }
    </style>
    
    
    {foreach $tables as $table}
        {cycle values="" reset=true print=false}
        <table>
            {foreach $table as $row}
            <tr class="{cycle values="odd,even"}">
                <td>
                    {$row}
                    </td>
            {/foreach}
        </table>
    {/foreach}
    

    您也可以这样做:

    {foreach $tables as $table}
        <table>
            {foreach $table as $row}
            {if $row@first}{assign var="reset" value=true}{/if}
            <tr class="{cycle values="odd,even" reset=$reset}">
                <td>
                    {$row}
                    </td>
             {assign var="reset" value=false}
            {/foreach}
        </table>
    {/foreach}
    

    【讨论】:

      猜你喜欢
      • 2018-07-02
      • 2012-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-06
      • 1970-01-01
      • 2011-01-17
      • 1970-01-01
      相关资源
      最近更新 更多