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>

PHP左侧菜单栏的管理与实现的更多相关文章
- PHP系统左侧菜单栏的管理与实现
		在日常的开发工作中,面对后台的日益增长的业务,以及后期业务的迭代开发,通常会选择添加菜单栏的形式来扩充业务功能,同样日益增长的后台菜单选项也为我们后期的维护,产生了一定的困难性.为此我总结出自己关于左 ... 
- Visio 2007/2010 左侧"形状"窗口管理
		Visio 2007/2010 左侧"形状"窗口管理 Visio 打开后,通常窗口左侧会有一个“形状”面板,我们可以方便地从中选择需要的形状.有时为了获得更大的版面空间或者不小心关 ... 
- WebStorm设置左侧菜单栏背景和字体设置
		WebStorm左侧菜单栏 webstorm是一款前端IDE利器,个人感觉黑色的背景比较炫酷,刚开始从网上下载的主题只能修改编辑窗口的背景色,经过查询资料终于把左边菜单栏的背景色也修改了. 第一步:点 ... 
- WPF仿网易云音乐系列(一、左侧菜单栏:Expander+RadioButton)
		1.简介 上一篇咱们说到,网易云音乐的左侧菜单栏可以通过Expander+RadioButton来实现,具体如何实现,咱们下面开始干: 首先来一张网易云音乐PC版原图(个人觉得PC版比UWP版左侧菜单 ... 
- WebStorm设置左侧菜单栏背景色和样式
		WebStrom一直以来都是默认的白色主题,今天想修改了下主题皮肤,结果导致左侧项目资源栏和顶部菜单栏也变成了黑色,结果无法改变回来,网上查了各种帖子,居然也没找到解决方法,自己研究了半天,终于搞定了 ... 
- webstom 配置git 后左侧菜单栏配色调整
		ws配置了git进行版本管理,但是最近改了主题,发现左侧列表的文件名的颜色都是一个颜色了.我想要的是,对未提交的文件用颜色区分,新建的,修改的,冲突的分别设置不同的颜色,不知在哪里能设置,求助 老规矩 ... 
- elementui左侧菜单栏刷新后还是原来的状态
		<template> <div id="leftMenuList"> <el-row> <el-col :span="24&qu ... 
- 左侧菜单栏,有对个li对应一个content
		html部分截图 不多说直接上js /*左侧导航栏*/var sect=$(".sect"); $(".nav-list .nav-a").each(funct ... 
- jQuery查找标签--选择器,筛选器,模态对话框, 左侧菜单栏
		查找标签 选择器: 基本选择器(同css) id选择器 $("#id") 标签选择器 $('tagName') class选择器 $(".className") ... 
随机推荐
- 反射与jvm
- Node的安装和进程管理
			安装nvm git clone https://github.com/creationix/nvm.git source nvm/nvm.sh 安装node nvm install 6.14.4(版本 ... 
- ROS time stamp and sync
			1. https://answers.ros.org/question/189867/what-is-the-timestamp/ In ROS messages timestamp is taken ... 
- python模拟蒙特·卡罗法计算圆周率
			蒙特·卡罗方法是一种通过概率来得到问题近似解的方法,在很多领域都有重要的应用,其中就包括圆周率近似值的计问题. 假设有一块边长为2的正方形木板,上面画一个单位圆,然后随意往木板上扔飞镖,落点坐标(x, ... 
- Consul1-window安装consul
			转自 https://blog.csdn.net/j903829182/article/details/80960802 consul下载地址: https://www.consul.io/down ... 
- 获取spring的IOC核心容器,并根据id获取对象
			public class Client { /** * 获取spring的IOC核心容器,并根据id获取对象 * ApplicationContext的三个常用实现类 * classPathXmlAp ... 
- 推荐.Net、C# 逆向反编译四大工具利器
			转自:https://blog.csdn.net/kongwei521/article/details/54927689 在项目开发过程中,估计也有人和我遇到过同样的经历:运行环境出现了重大Bug亟需 ... 
- mac charles手机抓包详细教程
			1.官方下载charles 2.查看电脑IP地址 3.Proxy>Proxy Settings>勾选 Enable transparent HTTP proxying (记住端口号 88 ... 
- Django first lesson  环境搭建
			pycharm ide集成开发环境 (提高开发效率) 解释器/编译器 编辑器 调试环境 虚拟机连接 设置VirtualBox端口 操作1 操作2 点击+号添加,名称为SSH,其中主机端口为物理机的端口 ... 
- error: No rule to make target '/usr/lib/libOpenNI.so', needed by 'bin/euroc_rectify'。 停止。
			这类问题的出现说明程序在编译时,CMakeLists.txt 文件没有找到OpenNI.so, 即 Pangolin库未安装或破损. 重新安装pangolin库即可.(亲测) 
