关于RBAC菜单的显示与隐藏,我用了这个代码,可就是不显示

浏览:1208 发布日期:2013/07/12 分类:求助交流
// 菜单页面
function menu() {
$this->checkUser();
if(isset($_SESSION[C('USER_AUTH_KEY')])) {
//显示菜单项
$menu = array();
if(isset($_SESSION['menu'.$_SESSION[C('USER_AUTH_KEY')]])) {
//如果已经缓存,直接读取缓存
$menu = $_SESSION['menu'.$_SESSION[C('USER_AUTH_KEY')]];
}else {
//读取数据库模块列表生成菜单项
$node = M("Node");
// $data['id']=array(array('gt',2),array('neq',49));
$data['cat_id']=1;
$data['status']=1;
$list = $node->where($data)->field('id,name,title')->order('sort asc')->findAll();
$Sub = M('Node');
foreach ($list as $n=>$val){
$data['cat_id']=$val['id'];
$data['status']=1;
$list[$n]['voo']=$Sub->where($data)->field('id,name,title')->order('sort asc')->select();
}    
//    dump($list);
//    从Session里面取出用户的可操作的模块

$accessList = $_SESSION['_ACCESS_LIST'];
//    做循环匹配,生成新的菜单数组并缓存到Session(超级管理员给所有菜单权限)
foreach($list as $key=>$module) {
if(isset($accessList[strtoupper(APP_NAME)][strtoupper($module['name'])]) || $_SESSION['administrator']) {
//设置模块访问权限
$module['access'] = 1;
$menu[$key] = $module;
}
}
//缓存菜单访问
$_SESSION['menu'.$_SESSION[C('USER_AUTH_KEY')]]    =    $menu;
}
if(!empty($_GET['tag'])){
$this->assign('menuTag',$_GET['tag']);
}
$this->assign('menu',$menu);
//    dump($menu);
}
最佳答案
评论( 相关
后面还有条评论,点击查看>>