Laravel-根据项目数在导航栏中添加多个项目



我有一个类别表,其中包含10列。现在,我想在导航栏中显示所有这些类别,这样5个类别的名称就可以放在导航栏的第一位,剩下的5个类别应该显示在前5个类别旁边的下拉框中,因为如果我有100个类别,我就不能循环浏览它们来并排显示。

<div class="menu-desktop">
<ul class="main-menu">
@if(count($categories)>0)
@foreach($categories as $category)
<li class="active-menu">
<a href=""> {{ ucwords($category->name) }}</a>
<ul class="sub-menu">
<li><a href="{{ route('men-sub-category-page',$category->id) }}">Mens</a></li>
<li><a href="{{ route('women-sub-category-page',$category->id) }}">Women</a></li>
<li><a href="{{ route('category-page',$category->id) }}">Both</a></li>
</ul>
</li>
@endforeach
@endif

</ul>
</div>  

目前我的观点是这样的,我只是循环浏览类别并并排显示

一种可能性是在foreach中使用slice循环执行前五项。slice返回从给定索引开始的集合的切片。如果要限制返回切片的大小,请将所需的大小作为第二个参数传递给该方法。

然后检查是否有五个以上的类别。如果为true,则在其余项目中再次循环。

请参阅下面的代码,我正在使用bootstrap,但您不需要。请注意@if@foreach对。

<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="#">Navbar</a>
@if(count($categories)>0)
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
@foreach($categories->slice(0, 5) as $category)
<li class="nav-item">
<a class="nav-link" href="#">{{ $category->name }}</a>
</li>
@endforeach
@if(count($categories)>5)
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
More categories
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
@foreach($categories->slice(5) as $category)
<a class="dropdown-item" href="#">{{ $category->name }}</a>
@endforeach
</div>
</li>
@endif
</ul>
</div>
@endif
</nav>

最新更新