使用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。给我一些解决方法
答案 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>
希望有帮助