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") ...
随机推荐
- Docke--利用 commit 理解构建镜像
Docker 利用commit理解构建镜像 镜像是容器的基础,每次执行 docker run 的时候都会指定哪个镜像作为容器运行的基础.当我们使用Docker Hub的镜像无法满足我们的需求时,我们就 ...
- java 数字左补齐0
NumberFormat nf = NumberFormat.getInstance(); //设置是否使用分组 nf.setGroupingUsed(false); ...
- 程序人生 | 35岁以上的 iOS 程序员都到哪里去了?
1.网上流传华为公司正在清理 34 岁以上的员工. " 中国区开始集中清理 34 + 的交付员工,...... 去向是跟海外服务部门交换今年新毕业的校招员工,也就是进新人,出旧人. 这些旧人 ...
- 请求转发 和 URL 重定向
五 请求转发 和 URL 重定向 1 请求转发和重定向 干什么用? 是我们在java后台servlet中 由一个servlet跳转到 另一个 servlet/jsp 要使用的技术 前端发送请求到后台 ...
- OA系统开发人事模块关于请假跨月的处理
前言:其实对于跨月的数据单独处理是不难的,但是对于后台显示页面,肯定不是单纯拼接一个where条件的,因此在我的项目也是如此,并不能够用普遍的方法来处理,此时就想尽量用简单的方法来处理跨月数据的准确性 ...
- AJAX原理解析与兼容方法封装
AJAX常用参数 AJAX对象兼容 AJAX对象方法与属性 AJAX封装兼容方法源码 AJAX全称Asynchronous JavaScript and XML(异步的JavaScript与XML), ...
- H5_0005:JS判断域名和时间有效期的方法
(function () { var n = { c: function (t, e) { //console.log("c"); //把i(15)的d数组转换成字串 for (v ...
- shell 生成文件统计信息
#!/bin/bash #file name : filestat.sh if [ $# -ne 1 ]; then echo "Usage is $0 basepath"; ex ...
- 执行python文件
方法一: 通过控制台程序,一行一行执行python程序,输一行执行一行 方法二: 将程序用编辑器编辑好,再在控制台中用路径打开一次性执行(前提是py程序的默认打开方式是python解释器)
- ThinkPHP—URL的访问以及各种方法的操作
1.URL访问 ThinkPHP采用单一入口模式访问应用,对应用的所有请求都定向到应用的入口文件,系统会从URL参数中解析当前请求的模块.控制器和操作,下面是一个标准的URL访问格式: 第一种访问方式 ...