在导航中突出显示选定的选项卡-Laravel Blade

时间:2018-08-14 17:52:01

标签: php laravel

我在视图中有下面的代码,但是当我转到页面时,该选项卡未显示为活动状态。我在SO的答案中搜索此内容,但无法解决我的问题。

我在做什么不对?

我正在使用laravel 5.6版

观点

utf-8

2 个答案:

答案 0 :(得分:3)

首先,我建议您将逻辑放在指令中,以使html看起来更粗糙,并且逻辑与视图分离。

在您的AppServiceProvider中,您只需输入

Blade::directive('menuActive',function($expression) {
    //explode the '$expression' string to the varibles needed
    list($route, $class) = explode(', ', $expression);
            //then we check if the route is the same as the one we are passing.
            return "{{ request()->is({$route}) ? {$class} : '' }}";
        });

在您的视图中知道您只是添加

<ul id="main-menu-navigation" data-menu="menu-navigation" class="nav navbar-nav">         
      <li class="nav-item @menuActive('admin/dashboard/foods/all', 'active')"><a href="/admin/dashboard/foods/all"  class="nav-link">
    <img src="/images/menubar/items.png" width="30px" height="30px" border="0" alt="Module Icon"/>
    <span>Food Items</span></a>           
    </li>

答案 1 :(得分:0)

我不确定Request::path()会返回什么,但是与您对/admin/dashboard/foods/all的支票不符(老实说,很可能是/开头的问题)

此外,is()帮助器上有一种称为request()的方法,用于确定当前路由是否与给定值匹配,因此请用作:

<li class="nav-item {{ request()->is('admin/dashboard/foods/all') ? 'active' : ''  }}"> ...

它应该可以工作。