Активный пункт меню Laravel для URL-адресов включает параметры

Я пытаюсь установить активный класс в свой элемент списка, но он не работает.

Мой код в клинке:

@foreach($data as $site)
  <ul class="sidebar-menu" id="second-menu">
  @if(isAdmin())<li class="{{-- active class  for url parameter --}}"><a href="{{ url('sites/'.$site->id.'/edit') }}" >{{ $site->name }}</a></li>
@endif
</ul>
@endforeach

Итак, если я пишу: li class= "@if (getRouteName() == 'site @index') {{'active'}} @endif", это работает хорошо, но в моем случае проблема в том, что я хочу получить "активный" класс в сайтах foreach /. $site-> id. '/edit

Большое спасибо.

Ответ 1

Используйте метод is(). Например:

<li class="{{ request()->is('sites/*/edit') ? 'active' : '' }}"

Ответ 2

В настоящее время я использую Laravel 5.6. * И мое решение:

<a href="#" class="nav-link {{ request()->is('users*') ? 'active' : '' }}">Users</a>

Ответ 3

Вы можете попробовать это также

<a href="#" class="{{ (\Request::route()->getName() == 'put the address of your route here or your route name') ? 'active' : '' }}">

например:

<a href="#" class="{{ (\Request::route()->getName() == 'admin') ? 'active' : '' }}">

Примечание. Я тестирую только в Laravel 5.5

Ответ 4

Существует также следующее, если вы назвали свой маршрут:

<li class="{{ Request::routeIs('admin') ? 'active' : '' }}">...</li>

Вдохновленный отсюда

Ответ 5

//my admin.app.blade file
<ul class="nav">
      <li class="nav-item @yield('query')">
        <a class="nav-link" href="{{route('query_page')}}">
          <i class="material-icons">query_builder</i>
          <p>Queries</p>
        </a>
      </li>
      <li class="nav-item @yield('feedback')">
        <a class="nav-link" href="{{route('feedback_page')}}">
          <i class="material-icons">feedback</i>
          <p>Feedback</p>
        </a>
      </li>
  </ul>

     //query.blade
     @extends('admin.app')
     @section('title', 'Query Manager')
     @section('page-heading', 'Query Manager')
     @section('query','active')



     //feedback.blade
     @extends('admin.app')
     @section('title', 'Feedback Manager')
     @section('page-heading', 'Feedback Manager')
     @section('feedback','active')

Ответ 6

Сделайте функцию в помощнике.

function activeMenu($uri = '') {
    $active = '';
    if (Request::is(Request::segment(1) . '/' . $uri . '/*') || Request::is(Request::segment(1) . '/' . $uri) || Request::is($uri)) {
        $active = 'active';
    }
    return $active;
}

Используйте его на боковой панели.

<li class="{{ activeMenu('dashboard') }}"></li>
<li class="{{ activeMenu('student') }}"></li>
<li class="{{ activeMenu('teacher') }}"></li>

Ответ 7

Используйте короткие, если. Пример:

<a href="#" class="{{ (\Request::route()->getName() == 'this.route') ? 'active' : '' }}">