Php 在Laravel 5中设置引导navbar活动类

Php 在Laravel 5中设置引导navbar活动类,php,laravel,laravel-5,Php,Laravel,Laravel 5,我一直在四处寻找解决方案,但无法真正理解,尤其是在创建助手时。我是Laravel的新手,我想要一个关于如何为我的引导navbar设置活动类的简单或详细说明 以下是我迄今为止所做的,但无法完成的工作: <div class="header clearfix"> <nav> <ul class="nav nav-pills pull-right"> <li c

我一直在四处寻找解决方案,但无法真正理解,尤其是在创建助手时。我是Laravel的新手,我想要一个关于如何为我的引导navbar设置活动类的简单或详细说明

以下是我迄今为止所做的,但无法完成的工作:

<div class="header clearfix">
        <nav>
          <ul class="nav nav-pills pull-right">
            <li class=""><a href="{{ url('/') }}">Home</a>
            </li>
            <li {{ Request::is('about*') ? ' class="active"' : null }}><a href="{{ url('about') }}">About Us</a>
            </li>
            <li><a href="{{ url('auth/login') }}">Login</a>
            </li>
        </ul>
    </nav>
    <h2 class="">Tobacco Prevention and Control Program</h2>
</div>

烟草防治计划
编辑


设置
class=“active”
将激活所有导航设备。预期的效果是,只有当前页面的
li
才有
活动的
类。

将其放入
helper.php

function set_active($path, $active = 'active') {

    return call_user_func_array('Request::is', (array)$path) ? $active : '';

}
像这样使用它

<li class="{{ set_active(['about*']) }}"><a href="{{ url('about') }}">About Us</a>
  • 可以向路由传递单个字符串,也可以传递多个字符串和通配符


    请参阅

    的更多详细信息。您的代码运行良好,但您必须将其用于可以激活的每个链接。最好只返回类名,而不是
    class=“…”
    ,这样就可以添加其他类

    在结尾使用
    *
    时要小心(
    about*
    )。如果您对主页使用
    /*
    ,则它将始终标记为活动(因为每隔一页都以
    /
    开头)

    您还可以将
    {{Request::is('/')?'active':''}}
    移动到助手函数/方法。

      <ul class="nav nav-second-level">
                          <li class="{{ Request::segment(1) === 'programs' ? 'active' : null }}">
                              <a href="{{ url('programs' )}}" ></i> Programs</a>
                          </li>
                          <li class="{{ Request::segment(1) === 'beneficiaries' ? 'active' : null }}">
                              <a href="{{url('beneficiaries')}}"> Beneficiaries</a>
                          </li>
                          <li class="{{ Request::segment(1) === 'indicators' ? 'active' : null }}">
                              <a href="{{url('indicators')}}"> Indicators</a>
                          </li>                     
                      </ul>
      

    如果您正在使用命名路由。您可以在视图中使用此方法:

    {{ Route::currentRouteNamed('about') ? 'active' : '' }}
    

    illumb\Routing\Router#is(…)
    illumb\Routing\Router#currentRouteName(…)
    Request::path()
    返回请求uri,例如:
    http://localhost/programs
    ,将返回
    程序
    ,因此您可以执行以下操作:

     <li class="{{ Request::path() ==  'programs' ? 'active' : ''  }}">
                        <a href="{{ url('programs') }}"></i> Programs</a>
                    </li>
    

  • 这很简单:要在使用引导时使链接处于活动状态,只需在类链接中添加一条if语句,例如:我的当前url为


  • 你可以走了

    我认为这很简单,对我来说也很有效

    <li class="{{ Request::segment(1)=='vehicles' ? 'active' : '' }}">
       <a href="/vehicles">Vehicles</a>
    </li>
    
  • 解决方案是

    正如我所发现的,@Daniel Antos给出的解决方案是最好的答案。Danial Antos先生还警告不要在结尾使用*(大约*)。因为在主页中使用/*时,它总是被标记为活动的(因为每一个其他页面都以/)开头)。因此,我使用了以下方法,效果很好:

    {{ (Request::is('users') || Request::is('users/*') ? 'active open' : '') }}
    
    我找到了解决办法:

    composer require devmarketer/easynav
    

    更多详细信息:

    在blade文件(let home.blade.php)上设置一个部分,如

    并在另一个刀片文件(let about.blade.php)上设置一个部分,如

    并在app.blade.php上生成此部分(假设您是从app.blade.php进行扩展)

    。。。
    
  • ...
    使用
    Request::is('[level]')?'活动“:”
    如果是多级,请使用:

    Request::is(“[level]”,“[level]/*”)?'活动“:”


    最简单的方法是添加活动类:-

    @if (request()->routeIs('dashboard'))
       class="active"
    @endif
    

    @但是OP可能只想在当前的
    nav li上呈现class=“active”
    可能重复的@Ajoy好的,我只是在审核队列中,看起来需要更多的澄清,就是这样all@krisdestruction对于一个以前从未处理过类似情况的人来说,这个问题并不清楚。我现在就编辑我已经编辑了你的问题。请随意删除或修改它与您自己的话!真正的解决方案。特别是对于带有下拉菜单的菜单。使用命名路由时的最佳解决方案。如果使用命名路由,我认为这是最好的方法。这适用于我的Laravel 7刀片模板。我添加到类选择器中
  • 我使用类似的方法,但是如果我有一个动态URL id,比如
    <ul class="nav navbar-nav pull-right">
          <li class="{{ Request::is('/') ? 'active' : '' }}">
             <a href="{{ url('/') }}">Home</a>
         </li>
          <li class="{{ Request::is('about') ? 'active' : '' }}">
             <a href="{{ url('/about') }}">About Us</a>
         </li>
          <li class="{{ Request::is('whyus') ? 'active' : '' }}">
             <a href="{{ url('/whyus') }}">Why Us</a>
          </li>
     </ul>
    
    {{ (Request::is('users') || Request::is('users/*') ? 'active open' : '') }}
    
    composer require devmarketer/easynav
    
    @section('Home', 'my-active-class')
    
    @section('About', 'my-active-class')
    
    ...
    <li class="@yield('Home')"><a href="#">Home</a></li>
    <li class="@yield('About')"><a href="#">About</a></li>
    ...
    
    <ul class="nav nav-second-level">
                        <li class={{ Request::is('/') ? 'active' : '' }}>
                            <a href="{{ url('programs' )}}" ></i> Programs</a>
                        </li>
                        <li class="{{ Request::segment(1) === 'beneficiaries' ? 'active' : null }}">
                            <a href="{{url('beneficiaries')}}"> Beneficiaries</a>
                        </li>
                        <li class="{{ Request::segment(1) === 'indicators' ? 'active' : null }}">
                            <a href="{{url('indicators')}}"> Indicators</a>
                        </li>                     
                    </ul>
    
    @if (request()->routeIs('dashboard'))
       class="active"
    @endif