Laravel Blade循环实现权限列表双列布局问题求助
实现Bootstrap List Group两列权限布局的正确思路
不用在控制器拆分权限集合,也不用纠结$loop->even/$loop->odd的问题,直接用Laravel集合自带的chunk(2)方法就能完美实现你要的布局——把权限按每2个一组拆分,每组对应一个list-group-item,左边放第一个权限,右边用ms-auto对齐第二个权限。
完整Blade代码示例
<div class="list-group"> @foreach($permissions->chunk(2) as $permissionPair) <div class="list-group-item d-flex align-items-center"> {{ $permissionPair[0]->name }} {{-- 处理权限数量为奇数的情况,避免报错 --}} @if(isset($permissionPair[1])) <span class="ms-auto">{{ $permissionPair[1]->name }}</span> @endif </div> @endforeach </div>
为什么这个方法可行?
chunk(2)会自动把你的权限集合拆分成若干个包含2个元素的子集合,最后一组如果只有1个元素也会保留,不用额外处理。- 遍历每个子集合时,直接把第一个元素放在左侧,第二个元素通过
ms-auto靠右对齐,完全匹配你给出的示例布局。 - 全程不需要在控制器修改集合,保持业务逻辑和视图渲染的分离,代码更简洁。
之前用$loop->even/$loop->odd达不到效果的原因是,这种方式是针对单个元素的遍历,没法把两个元素绑定到同一个list-group-item里,而chunk()刚好解决了这个分组问题。
内容的提问来源于stack exchange,提问作者Hardist
相关产品推荐
相关产品推荐

