如何在Laravel 5.6中为每个菜单使用唯一的ID并按ID而不是类突出显示?

时间:2018-11-18 05:19:17

标签: php twitter-bootstrap laravel-5

使用laravel 5.6时,我有引导程序的侧菜单项,

<li class="{{ active_menu(Route::CurrentRouteName(), 'reports', 0,7)}}">
    <a href="{{route('reports.alluser')}}">All Users</a></li>

    <li class="{{ active_menu(Route::CurrentRouteName(), 'reports', 0,7)}}">
    <a href="{{route('reports.pie_chart')}}">Category Chart</a></li>

    <li class="{{ active_menu(Route::CurrentRouteName(), 'reports', 0,7)}}">
    <a href="{{route('reports.categorystatic')}}">Category Static</a></li>

我在app / helper / Helper.php中具有此菜单的帮助功能

<?php

if(! function_exists('active_menu')) {
    function active_menu($currentRouteName, $requestName, $start, $finish){
        if (substr($currentRouteName,$start, $finish) == $requestName){
            return 'active';

        }else{
            return null;
        }
    }
    }

但是当我单击上方的一个菜单链接时,突出显示所有菜单链接。问题出在所有链接上,突出显示所有菜单中都包含“报告”,0,7

'reports', 0,7

如何防止突出显示所有菜单项而仅突出显示所选菜单项?我想如果我使用id而不是class可以解决问题。但我不知道如何在上述代码段中使用id。给我一些解决方法

1 个答案:

答案 0 :(得分:1)

我最近创建了一个辅助函数来帮助我解决这个确切的问题,这就是我想出的

function set_active($path, $keyword = '', $active = 'active')
{
    $url_path = Request::path();

    if (Request::is($path)
        || ($keyword && strpos($url_path, $keyword) !== false)) {
        return ' class="' . $active . '"';
    }

    return '';
    // return Request::is( $path . '*' ) ? ' class="' . $active . '"' :  '';
}

然后在刀片模板的导航部分中,我做了类似的事情

<ul class="nav navbar-nav">
    <li {!! set_active('/') !!}>
        <a href="/">Home</a>
    </li>
    <li {!! set_active('about-us') !!}>
        <a href="/about-us">About Us</a>
    </li>
    <li {!! set_active('job-listing', 'job') !!}>
        <a href="/job-listing">Jobs</a>
    </li>
    <li {!! set_active('employers', 'employer') !!}>
        <a href="/employers">Employers</a>
    </li>
    <li {!! set_active('contact-us') !!}>
        <a href="/contact-us">Contact Us</a>
    </li>
</ul>

在您的情况下,请执行以下操作

<li {!! set_active(Route::getCurrentRoute()->uri) !!}>
    <a href="{{route('reports.alluser')}}">All Users</a>
</li>

希望有帮助