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") ...
随机推荐
- SpringMVC 监听文件上传进度
Spring MVC 监听文件上传进度 具体实现分三个步骤: 接管CommonsMultipartResolver,重写针对文件上传的请求. 在第一步中写入监听,以获取上传进度. 修改上传部分的配置文 ...
- goroutine的意义与实现
goroutine的意义与实现 goroutine存在的意义 goroutine是用于实现GO的并发的,而不是并行.此处的并发指的是一套管理.调度.执行goroutine的过程. 并行的性能更高,可以 ...
- shell脚本备份日志文件
crontab -e crontab -l service crond restart 55 7 * * * /data/app/autoprice7/resin-pro-3.1.15/log_old ...
- P4180 严格次小生成树[BJWC2010] Kruskal,倍增
题目链接\(Click\) \(Here\). 题意就是要求一个图的严格次小生成树.以前被题面吓到了没敢做,写了一下发现并不难. 既然要考虑次小我们就先考虑最小.可以感性理解到一定有一种次小生成树,可 ...
- [Luogu 4316] 绿豆蛙的归宿
题目链接 一道基础的 \(DAG\) 上期望 \(DP\). 给出一个有向无环图,起点为 \(1\) 终点为 \(N\),每条边都有一个长度,并且从起点出发能够到达所有的点,所有的点也都能够到达终点. ...
- seq2seq
seq2seq: seq2seq就是将输入序列经过encoder-decoder变成目标序列. 如图所示,输入序列是 [A, B, C, <EOS>],输出序列是 [W, X, Y, Z ...
- hive 时间函数
使用时发现:1.datediff可以传入timestamp类型参数 官网文档: Date Functions The following built-in date functions are ...
- IntelliJ IDEA 2018最新版注册码激活方法
一.首先点击intellij idea 2018 二.选择激活码 三.输入以下激活码intellij idea 2018 最新版本 注册激活码 **************************** ...
- 2018-2019-2 网络对抗技术 20165337 Exp3 免杀原理与实践
基础问题回答 (1)杀软是如何检测出恶意代码的? 基于特征码的检测:特征码就是一段数据.如果一个可执行文件(或其他运行的库.脚本等)包含特定的数据则被认为是恶意代码.AV软件厂商要做的就是尽量搜集最全 ...
- Python自动化中的元素定位xpath(二)
1.Xpath元素定位 1)ele = b.find_element_by_xpath(‘/html/body/from/input[1]’) 2)Ele = b.find_element_by_xp ...