【问题标题】:Smarty, new row every 4 iterationSmarty,每 4 次迭代新行
【发布时间】:2018-11-15 18:19:11
【问题描述】:

如何在 Smarty 中设置循环中的每 4 次迭代,我将在表中获得新行? 我正在尝试这样的事情:

<table>
    {foreach $arr as $v}
       {counter start=0}
       {if $counter/4 == 0}
           <tr><td>{$v}</td></tr>
       {else}
           <td>{$v}</td>
       {/if}
       <td>
    {/foreach}
</table>

但我知道这很愚蠢,我被卡住了,有正常的方法吗?

【问题讨论】:

  • 试试$counter % 4 == 0,因为$counter/4是除法运算符。所以它不会给你零。检查整除性总是使用%
  • 每添加四个单元格后是否要添加一行?
  • 是的,每四个单元格新行。像 OOOO OOOO OOOO 但每个 'OOOO' 都在新行。

标签: php foreach html-table smarty counter


【解决方案1】:

如果在没有数据的情况下你可以忍受一个空行,那么使用这个:

{assign var="counter" value="0"}
<table>
    <tr>
    {foreach $arr as $v}
       {assign var="counter" value=$counter + 1}
       {if $counter % 4 == 0}
           </tr><tr>
       {/if}
       <td>{$v}</td>
    {/foreach}
    </tr>
</table>

如果你不能忍受这个,那么你需要在渲染表格之前检查是否有可用的数据。

仍然要说$arr 的计数必须是4 的倍数。否则需要正确设置columnspan 属性。

【讨论】:

  • 你应该使用模 %,而不是除 /
  • 是的,当然。完全错过了替换它:)
  • +1 你比我快。我正在打字以发布此解决方案。
  • 谢谢,但它不起作用,我收到输入 Undefined index: counter in 的错误,我写了 $counter / 4 只是例如,我不知道是否可以这样检查。
  • 现在分配可以工作了,谢谢,但是他们在每行之后写了&lt;/tr&gt;&lt;tr&gt;,他们没有检查$counter % 4 == 0
【解决方案2】:

对于任意数量的列,这将是 Smarty 3 解决方案,没有空行,并在必要时添加带有 colspan 值的最后一个空单元格:

   <table>
        <tr>
    {$cols=4}
    {foreach $arr as $v}
        <td>{$v}</td>
        {if !$v@last AND $v@iteration is div by $cols}
            </tr><tr>
        {/if}
        {if $v@last AND $v@iteration is not div by $cols}
            <td colspan="{$cols-$v@iteration%$cols}"></td>
        {/if}
     {foreachelse}
           <td colspan="{$cols}">No data</td>    
     {/foreach}
        </tr>
    </table>

【讨论】:

    【解决方案3】:

    没有附加计数器变量且没有空行的 Foreach

    <table>
    <tr>
        {foreach from=$aArray item=sValue name=tags_foreach}
        {if $smarty.foreach.tags_foreach.index != 0 AND $smarty.foreach.tags_foreach.index mod 4 == 0}
            </tr><tr>
        {/if}
    
        <td>
            {$sValue}
        </td>
        {/foreach}
    </tr>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-01
      • 1970-01-01
      • 2023-04-03
      • 2022-01-10
      • 1970-01-01
      • 2014-09-07
      • 2017-11-20
      相关资源
      最近更新 更多