如何使我的侧边栏导航子菜单在Laravel中的新HTTP请求中保持扩展和活动状态?

时间:2016-10-02 09:21:16

标签: javascript jquery-ui laravel-5

我的子菜单有问题。当我点击子菜单时,它会在http请求后变为活动状态,但我希望它在http请求(页面刷新)之后保持展开状态.Menu结构如下所示。

  <ul class="sidebar-navigation>
 @foreach($parent as $parent)
 <li><a href="#">{{$parent->name}}</a>
 <ul>
 @foreach($child as $child)
 @if(isset($_GET['name']) && $_GET['name'] == $child->name)
 <li class="active"> 
 @endif
 <a href="http:example.com?name=$child->name">{{$child>name)}}</a>
 </li>
 @endforeach
 </ul>
 </li>
 @endforeach 
 </ul>

1 个答案:

答案 0 :(得分:0)

这是一个想法,这就是我要做的事情来实现这种效果。我使用AdminLTE,您应该根据此代码更改您的代码,基本思路是判断当前路由如果路由需要打开侧边栏然后给一个类'主动' 到html标签。

HTML:

<div class="main-sidebar">
  <div class="sidebar">
    <ul class="sidebar-menu">
      <li class="treeview {{ sidebar_open(['admin.roles.*']) }}">
      <a href="#">
        <i class="fa fa-user-secret"></i>
        <span>角色管理</span>
        <span class="pull-right-container">
          <i class="fa fa-angle-left pull-right"></i>
        </span>
      </a>
      <ul class="treeview-menu">
        <li><a href="{{ route('admin.roles.index') }}"><i class="fa fa-circle-o"></i>角色列表</a></li>
        <li><a href="{{ route('admin.roles.create') }}"><i class="fa fa-circle-o"></i>新建角色</a></li>
      </ul>
    </li>
  </ul>

定义辅助函数:

<?php 
if (!function_exists('sidebar_open')) {
    function sidebar_open($routes = []) {
        $currRoute = Route::currentRouteName();
        $open = false;
        foreach ($routes as $route) {
            if (str_contains($route, '*')) {
                if (str_contains($currRoute, substr($route, '-1'))) {
                $open = true;
                break;
            }
        } else {
            if ($currRoute === $route) {
                $open = true;
                break;
            }
        }
    }

    return $open ? 'active' : '';
}
}