Laravel - Добавление нескольких элементов на панель навигации в зависимости от количества элементов - PullRequest
2 голосов
/ 06 мая 2020

У меня есть таблица категорий, которая содержит, скажем, 10 столбцов. Теперь я хочу показать все эти категории на панели навигации таким образом, чтобы имена 5 категорий появлялись первыми на панели навигации, а остальные 5 категорий должны отображаться в раскрывающемся списке рядом с первыми 5 категориями, поскольку в случае, если у меня есть 100 категории, я не могу просмотреть их все, чтобы показать их рядом.

1 Ответ

0 голосов
/ 06 мая 2020

Один из возможных вариантов - l oop через первые пять элементов, используя slice внутри foreach. slice возвращает фрагмент коллекции, начиная с данного индекса. Если вы хотите ограничить размер возвращаемого фрагмента, передайте желаемый размер в качестве второго аргумента метода.

Затем проверьте, существует ли более пяти категорий. Если это правда, l oop снова через оставшиеся элементы.

См. Мой код ниже, я использую 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...