使用 laravel 刀片限制连续 <td> 的数量

Posted

技术标签:

【中文标题】使用 laravel 刀片限制连续 <td> 的数量【英文标题】:Limit the number of <td> in a row using the laravel blade 【发布时间】:2022-01-17 12:35:24 【问题描述】:

我的刀片文件中有以下代码 $titleObject 是一个集合。有没有办法限制每行项目的数量(例如:每行 3 个项目)。请让我知道是否有比编写复杂的 for 循环更好的方法来实现这一点。

<div class="container" align="left"> 
  <!-- Navigation -->
  <header> <a href="">
    <table cellpadding="10"  border="0">
      <tbody>
      @if($titleObject)
        <tr>
        @foreach($titleObject as $title)
          <td>$title->title</td>
           <td>&nbsp;</td>
           @endforeach
        </tr>
        @endif
       
      </tbody>
    </table>
    <h4 class="logo">&nbsp;</h4>
  </a></header>
</div>

【问题讨论】:

【参考方案1】:

假设键从 0 开始并正常上升,您可以使用它通过模运算符确定每隔三个元素。这样的事情应该可以工作。

@if($titleObject)
  @foreach($titleObject as $key => $title)
    @if($key % 3 == 0)
     <tr>
    @endif
    <td>$title->title</td>
    <td>&nbsp;</td>
    @if($key % 3 == 2)
     </tr>
    @endif
  @endforeach
@endif

如果键不等于索引,您可以添加一个 php 变量或一个正常的 for 循环,它会向上计数并使用与上述相同的逻辑。

【讨论】:

【参考方案2】:

这是一种方法:

<tbody>
  @if($titleObject)
    @foreach($titleObject as $title)
      @if($loop->index % 3 == 0)
       <tr>
      @endif
    
      <td>$title->title</td>
      <td>&nbsp;</td>
    
      @if($loop->index % 3 == 0)
       </tr>
      @endif
    
    @endforeach
  @endif
</tbody>

【讨论】:

【参考方案3】:

您可以使用Laravel Collection Chunk

<table>
    <tbody>
        @forelse ($titleObject->chunk(3) as $chunkedTitleObjects)
            <tr>
                @foreach ($chunkedTitleObjects as $title)
                    <td>$title->title</td>
                @endforeach
            </tr>
        @empty
            <tr>There is no data in table</tr>
        @endforelse
    </tbody>
</table>

让我知道结果。

【讨论】:

我不知道这个函数存在,有趣:D 是的,其实这是一个好方法。在过去的 4 年里,我一直在使用它。自从我学习了 Core PHP。

以上是关于使用 laravel 刀片限制连续 <td> 的数量的主要内容,如果未能解决你的问题,请参考以下文章

我们如何在 laravel php 刀片模板中为 foreach 循环定义循环变量

如何在 Laravel 刀片中使用动态表列值设置宽度

如何在刀片 Laravel 中添加两个数字

Laravel 5.1 不能在集合上使用 @foreach

在刀片视图文件中使用laravel策略授权

Laravel Spatie 无法限制 UserController