Blade模板中实现每10个<li>生成一个新<ul>包裹的解决方案
实现方案
你可以直接用Laravel 集合内置的chunk方法完成分组,这是最简洁且不易出错的实现方式:
方案1:基于集合chunk方法(推荐)
chunk方法可以直接将数据集按指定数量拆分为多个子集,你只需要外层循环子集生成<ul>,内层循环子集的元素生成<li>即可,代码如下:
{{-- 假设控制器传入的数据集为 $items --}} @foreach($items->chunk(10) as $group) <ul> @foreach($group as $item) <li>{{ $item->你要展示的字段名 }}</li> @endforeach </ul> @endforeach
如果后端传入的是数组而非Laravel集合,只需在Blade中先转集合即可:
@foreach(collect($items)->chunk(10) as $group) <!-- 内部ul、li生成逻辑和上面一致 --> @endforeach
这个方案自动处理了最后一组不足10条的边界情况,不会生成空的<ul>标签。
方案2:基于循环计数实现
如果你不想用集合方法,也可以借助Blade循环自带的索引变量手动控制标签开闭:
@if($items->isNotEmpty()) {{-- 先开启第一个ul --}} <ul> @foreach($items as $index => $item) <li>{{ $item->你要展示的字段名 }}</li> {{-- 每满10条、且不是最后一条数据时,关闭当前ul并开启新ul --}} @if(($index + 1) % 10 == 0 && !$loop->last) </ul> <ul> @endif @endforeach {{-- 关闭最后一个ul --}} </ul> @endif
内容的提问来源于stack exchange,提问作者Tiago Pimentta
相关产品推荐
相关产品推荐

