adminAuthRuleModel = $this->nwModel('admin_auth_rule'); } public function index() { // 排序 $this->listOrders($this->adminAuthRuleModel); $result = $this->adminAuthRuleModel->order(["list_order" => "ASC"])->select(); $tree = new Tree(); $tree->icon = ['   │ ', '   ├─ ', '   └─ ']; $tree->nbsp = '   '; $newMenus = []; foreach ($result as $m) { $newMenus[$m['id']] = $m; } foreach ($result as $key => $value) { $result[$key]['parent_id_node'] = ($value['parent_id']) ? ' class="child-of-node-' . $value['parent_id'] . '"' : ''; $result[$key]['style'] = empty($value['parent_id']) ? '' : 'display:none;'; $str_manage = ''; if (authUI('admin/menu/add')) { $str_manage .= ' $value['id'], "menu_id" => $this->request->param("menu_id")]) . '">添加子菜单 '; } if (authUI('admin/Menu/edit')) { $str_manage .= ' $value['id'], "menu_id" => $this->request->param("menu_id")]) . '">编辑 '; } if (authUI('admin/Menu/delete')) { $str_manage .= ' $value['id'], "menu_id" => $this->request->param("menu_id")]) . '\')"> 删除 '; } $result[$key]['status'] = $value['status'] ? '显示' : '隐藏'; $result[$key]['str_manage'] = $str_manage; if (Config::get('app_debug')) { $result[$key]['app'] = $value['auth_name']; } } $tree->init($result); $str = " \$id \$spacer\$name \$auth_name \$status \$str_manage "; $category = $tree->getTree(0, $str); $this->assign("category", $category); return $this->fetch(); } public function add() { $tree = new Tree(); $parentId = $this->request->param("parent_id", 0, 'intval'); $result = $this->adminAuthRuleModel->select(); $array = []; foreach ($result as $r) { $r['selected'] = $r['id'] == $parentId ? 'selected' : ''; $array[] = $r; } $str = ""; $tree->init($array); $selectCategory = $tree->getTree(0, $str); $this->assign("select_category", $selectCategory); return $this->fetch(); } public function addPost() { if ($this->request->isPost()) { $result = $this->validate($this->request->param(), 'AdminMenu'); if ($result !== true) { $this->error($result); } else { $icon = $this->request->param("icon"); $status = $this->request->param("status"); $parent_id = $this->request->param("parent_id"); $app = $this->request->param("app"); $controller = $this->request->param("controller"); $action = $this->request->param("action"); $param = $this->request->param("param"); $authRuleName = "$app/$controller/$action"; $menuName = $this->request->param("name"); //一级菜单时 if($parent_id==0){ $tab_type = $this->request->param("tab_type"); } else{ $tab_type = 0; } $findAuthRuleCount = $this->adminAuthRuleModel->where([ 'auth_name' => $authRuleName, ])->count(); if (empty($findAuthRuleCount)) { $this->adminAuthRuleModel->insert([ "name" => $menuName, "auth_name" => $authRuleName, 'param' => $param, 'icon' => $icon, 'status' => $status, 'parent_id' => $parent_id, 'tab_type' =>$tab_type ]); } $this->success("添加成功!", url('Menu/index')); } } } /** * 菜单编辑页 * @return mixed|string */ public function edit() { $tree = new Tree(); $id = $this->request->param("id", 0, 'intval'); $rs = $this->adminAuthRuleModel->where(["id" => $id])->find(); list($app, $controller, $action) = explode('/', $rs['auth_name']); $rs['app'] = $app; $rs['controller'] = $controller; $rs['action'] = $action; $result = $this->adminAuthRuleModel->select(); $array = []; foreach ($result as $r) { $r['selected'] = $r['id'] == $rs['parent_id'] ? 'selected' : ''; $array[] = $r; } $str = ""; $tree->init($array); $selectCategory = $tree->getTree(0, $str); $this->assign("data", $rs); $this->assign("select_category", $selectCategory); return $this->fetch(); } /** * 菜单编辑处理 * @return mixed|string */ public function editPost() { if ($this->request->isPost()) { $id = $this->request->param('id', 0, 'intval'); $result = $this->validate($this->request->param(), 'AdminMenu.edit'); if ($result !== true) { $this->error($result); } elseif(!$this->adminAuthRuleModel->where(['id' => $id])->find()) { $this->error('菜单不存在'); } else { $icon = $this->request->param("icon"); $status = $this->request->param("status"); $parent_id = $this->request->param("parent_id"); $app = $this->request->param("app"); $controller = $this->request->param("controller"); $action = $this->request->param("action"); $param = $this->request->param("param"); $authRuleName = "$app/$controller/$action"; $menuName = $this->request->param("name"); //一级菜单时 if($parent_id==0){ $tab_type = $this->request->param("tab_type"); } else{ $tab_type = 0; } $this->adminAuthRuleModel->where(['id' => $id]) ->update([ "name" => $menuName, "auth_name" => $authRuleName, 'param' => $param, 'icon' => $icon, 'status' => $status, 'parent_id' => $parent_id, 'tab_type' => $tab_type ]); $this->success("保存成功!"); } } } public function delete() { $id = $this->request->param("id", 0, 'intval'); $count = $this->adminAuthRuleModel->where(["parent_id" => $id])->count(); if ($count > 0) { $this->error("该菜单下还有子菜单,无法删除!"); } if ($this->adminAuthRuleModel->delete($id) !== false) { $this->success("删除菜单成功!"); } else { $this->error("删除失败!"); } } }