PHP左側菜單欄的管理與實現

以thinkPHP5.0爲例

後臺config.php文件裏配置

//配置文件設置菜單內容屬性

'menu' => [
  [
    'name' => '菜單欄1',
    'url' => '/admin/index/one',
    'status'=> 0,
    'sub'=> 0
  ],
  [
    'name' => '菜單欄2',
    'url' => '#',
    'status'=> 0,
    'sub'=>[
        [
          'name' => '子菜單欄1',
          'url' => '/admin/user/one',
          'status'=> 0,
        ],
        [
          'name' => '子菜單欄2',
          'url' => '/admin/user/two'),
          'status'=> 0,
        ],
    ]
  ],
  [
    'name'=> '菜單欄3',
    'url' => '#',
    'status'=> 0,
    'sub'=>[
        [
          'name' => '子菜單欄1',
          'url' => '/admin/admin/one',
          'status'=> 0,
        ],
        [
          'name' => '子菜單欄2',
          'url' =>url('/admin/admin/two'),
          'status' => 0,
        ],
    ]
  ],
  [
    'name' => '菜單欄4',
    'url' => '/admin/order/one',
    'status'=> 0,
    'sub'=> 0
  ]
]
 
 

  

 在項目後臺初始化方法裏base

class Base extends Controller
{

    protected function _initialize()
    {
        $request = Request::instance();
        if (session('uid') === null) {
            $this->redirect('Simple/login');
        }
        $menu = Config::get('menu'); //獲取配置文件裏的菜單數據
        $clickUrl = $request->path(); //獲取當前請求的地址
        $clickUrl = '/' . $clickUrl;
        $menuData = setMenu($menu, $clickUrl); //對每一個配置項進行狀態設置
        $this->assign('menu', $menuData);
    }
}
 
 

  

 後臺common.php文件

function setMenu($menuData,$url){
    if (!is_array($menuData)){
        return false;
    }
    foreach ($menuData as $key => $value) {
        if($value['url'] == '#'){
            foreach ($value['sub'] as $k => $v) {
                if($v['url'] == $url){
                    $menuData[$key]['status'] = 1;     //改變當前訪問的子菜單欄狀態
                    $menuData[$key]['sub'][$k]['status'] = 1;  //改變當前當前的菜單欄狀態
                }
            }
        } else {
            $menuData[$key]['status'] = 1;
        }
    }
    return $menuData;
}
 
 

  

 佈局頁面上view判斷菜單欄及子菜單欄的status狀態 
<div class="side-content" id="sidebar-menu">
    <ul class="nav-main" id="side-item">
        {volist name="menu" id="vo"}
        {empty name="$vo.sub"}
            <li>
                <a  href="{$vo.url}" target="_self"><span class="sidebar-mini-hide">{$vo.name}</span></a>
            </li>
        {else /}
            {if condition="$vo.status eq 1"}
            <li class="dropdown open">
            {else /}
            <li class="dropdown">
            {/if}
                <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="true">{$vo.name} <span class="caret"></span></a>
                <ul class="dropdown">
                    {volist name="vo.sub" id="v"}
            {if condition="$v.status eq 1"}
            <li class="active">
            {else /}
            <li>
            {/if}
                        <a href="{$v.url}" target="_self"><span class="sidebar-mini-hide">{$v.name}</span></a>
                    </li>
                    {/volist}
                </ul>
            </li>
        {/empty}
        {/volist}
    </ul>
</div>

  

 

相關文章
相關標籤/搜索