我在视图中有下面的代码,但是当我转到页面时,该选项卡未显示为活动状态。我在SO的答案中搜索此内容,但无法解决我的问题。
我在做什么不对?
我正在使用laravel 5.6版
观点
utf-8
答案 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' : '' }}"> ...
它应该可以工作。