用于url的Laravel活动菜单项包括参数

时间:2017-05-12 12:11:59

标签: php laravel

我正在尝试在列表项中设置活动类,但它不起作用。

我在刀片中的代码:

@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 sites /'.$ site-&gt; id。'/ edit

中获得'有效'课程

非常感谢。

14 个答案:

答案 0 :(得分:10)

我当前正在使用Laravel 5.6。*,而我的解决方案是:

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

答案 1 :(得分:5)

你也可以试试这个

id | name | address | account | note
1     a       aa  
2     b       bb
3                       1       a
4                       2       bb

e.g:

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

注意:我只在Laravel 5.5中测试

答案 2 :(得分:2)

如果您已命名路线,则还有以下内容:

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

Inspired from here

答案 3 :(得分:2)

我正在使用Laravel 7和Bootstrap Dropdown。因此,有几个依赖于链接的折叠项有效,

<li class="nav-item {{ Route::is('users.*') || Route::is('user.*')  ? 'active' : '' }}">

答案 4 :(得分:1)

//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')

答案 5 :(得分:1)

帮助器中起作用。

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>

答案 6 :(得分:1)

首先我会改变我的观点,然后你可以投票或不投票。

  1. 首先,您要使用路径激活菜单,以便可以使用波纹管代码。

    <块引用>

    {{ request()->path() === 'admin/orders' ? 'your_active_class':'' }}

  2. 第二,如果你想使用查询参数激活你的菜单,这样你就可以 使用下面的代码。

    <块引用>

    {{ request()->query('status') === 'processing' ? 'your_active_class' : '' }}

  3. 第三次使用名称路由

<块引用>

request()->routeIs('admin.cities')

甚至是子路径(例如编辑、创建或其他任何东西

request()->routeIs('admin.cities*')

如果你更喜欢使用路由门面,你仍然可以使用

 Route::named('admin.cities*')

答案 7 :(得分:0)

使用short if。 例如:

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

答案 8 :(得分:0)

Laravel 7 +

对于前缀为adminadmin.viewadmin.edit等的命名路由...

<li class="{{ Str::startsWith(Route::currentRouteName(), 'admin')) ? 'active' : '' }}">...</li>

有点冗长,但是您可以考虑制作自定义函数,例如is_active('admin')

答案 9 :(得分:0)

由于没有提及,我更喜欢使用这种语法来检查路线。

<li>
    <a href="#" class="nav-link {{ request()->routeIs('team*') ? 'active font-weight-bolder' : '' }}">Teams</a>
</li>

还有两件事:

  • 添加星号(不带点号作为路线名称)将定位以团队,团队等开头的所有路线。

  • 如果您使用的是诸如Bootstrap或Tailwind之类的CSS框架,您还可以在此处添加类来设置菜单项的样式,而不必为此编写一些CSS。

答案 10 :(得分:0)

为方便起见,在 helper 中创建一个函数并自动加载它。

"autoload": {
    "psr-4": {
        "App\\": "app/",
        "Database\\Factories\\": "database/factories/",
        "Database\\Seeders\\": "database/seeders/"
    },
    "files": [
        "helpers/helpers.php"
    ]
},

// helpers/helpers.php

if (!function_exists('selected')) {
    function selected($routeName, $parameters = [], $class = 'active')
    {
        if (!route_has($routeName)) {
            return '';
        }

        return '/' . request()->path() == route($routeName, $parameters, false) ? $class : '';
    }
}

<a href="{{ route('example_route_name', [], false) }}" class="{{ selected('example_route_name', []) }}">Menu
</a>

答案 11 :(得分:0)

如果您想使用内联 CSS,请使用以下解决方案(目前使用 Laravel 8)。

     <ul>
         <li><a href="{{ url('/') }}" style="{{ request()->is('/') ? 'color: #F9A82D;' : '' }}">Home</a></li>
         <li><a href="{{ url('/profile') }} " style="{{ request()->is('/profile') ? 'color: #F9A82D;' : '' }}">Profile</a></li>
    </ul>

对于带有参数的链接,例如 http://127.0.0.1:8000/user/{id} 使用 "request()->is('/user/*')"。< /b> 见下例:
<li><a href="{{ url('/user{id}') }} " style="{{ request()->is('/user/*') ? 'color: #F9A82D;' : '' }}">User</a></li>

reference
不客气。

答案 12 :(得分:0)

is('admin/restaurant/create*')) ? '活动':''}}>

.active { 背景色:#7dd3f6; }

答案 13 :(得分:0)

使用请求段来激活当前菜单。 reference

<li class="{{ (request()->segment(2) == 'home') ? 'active' : '' }}" >
    <a href="{{ url('home') }}">Home</a>
</li>