亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
博主信息
博文 34
粉絲 1
評論 1
訪問量 47267
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
ThinkkPHP6關于角色管理總結
嘿哈的博客
原創(chuàng)
1154人瀏覽過

角色管理總結

效果圖

前端代碼

遍歷權限列表時 name=”menu[$vo.mid]” 利用數(shù)組進行存儲可能被選中的值并傳至服務器

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>角色管理</title>
  5. <link rel="stylesheet" type="text/css" href="/static/plugins/layui/css/layui.css">
  6. <script type="text/javascript" src="/static/plugins/layui/layui.js"></script>
  7. </head>
  8. <body style="padding: 10px">
  9. <form class="layui-form">
  10. <input type="hidden" name="gid" value="{$item.gid}">
  11. <div class="layui-form-item">
  12. <label class="layui-form-label">角色名稱</label>
  13. <div class="layui-input-inline">
  14. <input type="text" name="title" value="{$item.title}" class="layui-input">
  15. </div>
  16. </div>
  17. <div class="layui-form-item">
  18. <label class="layui-form-label">權限管理</label>
  19. </div>
  20. {volist name="menus" id="vo"}
  21. <hr>
  22. <div class="layui-input-block">
  23. <input type="checkbox" name="menu[{$vo.mid}]" lay-skin="primary" title="{$vo.title}" {:isset($item['rights']) && $item['rights'] && in_array($vo.mid,$item['rights'])?'checked':''}>
  24. <hr>
  25. {volist name="vo.children" id="cvo"}
  26. <input type="checkbox" name="menu[{$cvo.mid}]" lay-skin="primary" title="{$cvo.title}" {:isset($item['rights']) && $item['rights'] && in_array($cvo.mid,$item['rights'])?'checked':''}>
  27. {/volist}
  28. </div>
  29. {/volist}
  30. </form>
  31. <div class="layui-form-item" style="margin-top: 10px;">
  32. <div class="layui-input-block">
  33. <button class="layui-btn " onclick="save()">保存</button>
  34. </div>
  35. </div>
  36. </body>
  37. </html>
  38. <script type="text/javascript">
  39. layui.use(['layer','form'],function(){
  40. var form = layui.form;
  41. layer = layui.layer;
  42. $ = layui.jquery;
  43. });
  44. function save(){
  45. var title = $.trim($('input[name="title"]').val());
  46. if(title==''){
  47. layer.msg('請?zhí)顚懡巧Q',{'icon':2});
  48. return;
  49. }
  50. $.post('/admins/roles/save',$('form').serialize(),function(res){
  51. if(res.code>0){
  52. layer.msg(res.msg,{'icon':2});
  53. }else{
  54. layer.msg(res.msg,{'icon':1});
  55. setTimeout(function(){parent.window.location.reload();},1000);
  56. }
  57. },'json');
  58. }
  59. </script>

服務器端代碼

  1. <?php
  2. namespace app\admins\controller;
  3. use app\BaseController;
  4. use think\facade\View;
  5. use think\facade\Db;
  6. /**
  7. * 角色管理
  8. */
  9. class Roles extends Bases
  10. {
  11. //角色列表
  12. public function index()
  13. {
  14. //查詢角色列表
  15. $data['item'] = Db::table('admin_groups')->lists();
  16. return view('',$data); //渲染
  17. }
  18. //添加編輯角色
  19. public function add()
  20. {
  21. $gid = (int)input('get.gid'); //get獲取url中gid的值
  22. $item = Db::table('admin_groups')->where('gid',$gid)->item();//查詢對應gid數(shù)據(jù)
  23. //邏輯與 判斷兩者是否存在 條件成立 將字符串轉換成數(shù)組
  24. $item && $item['rights'] && $item['rights'] = json_decode($item['rights']);
  25. //if($role && $role['rights']){$role['rights'] = json_decode($role['rights']);}
  26. $data['item'] =$item;
  27. //查詢所有菜單列表 并將下標更換與mid等值 cates是自己封裝的 下方有解釋
  28. $menu_lists = Db::table('admin_menus')->where('status',0)->cates('mid');
  29. //進行樹狀處理 組成無限級菜單 gettreeitems是自己封裝的 下方有解釋
  30. $menus = $this->gettreeitems($menu_lists);
  31. //創(chuàng)建一個空數(shù)組
  32. $temp = array();
  33. foreach($menus as $value){
  34. //當數(shù)據(jù)中有children時,進行遞歸處理,轉換成二級菜單
  35. $value['children'] = isset($value['children'])?$this->formatMenus($value['children']):false;
  36. //將轉換的新數(shù)據(jù)賦值給空數(shù)組
  37. $temp[] = $value;
  38. }
  39. $data['menus'] = $temp;
  40. // dump($data['menus']);
  41. return view('',$data);
  42. }
  43. //保存
  44. public function save()
  45. {
  46. $gid = (int)input('post.gid');
  47. $title = trim(input('post.title'));
  48. $menus = input('post.menu');
  49. $menus = $menus?$menus:[];
  50. if($gid>0){
  51. Db::table('admin_groups')->where('gid',$gid)->update(array('title'=>$title,'rights'=>json_encode(array_keys($menus))));
  52. }else{
  53. Db::table('admin_groups')->insert(array('title'=>$title,'rights'=>json_encode(array_keys($menus))));
  54. }
  55. exit(json_encode(array('code'=>0,'msg'=>'保存成功')));
  56. }
  57. //樹狀處理
  58. /*
  59. ** 創(chuàng)建新的數(shù)組 傳進的數(shù)據(jù)進行遍歷 該數(shù)據(jù)下標已進行處理,與mid一致 mid與pid進行父子關系綁定
  60. ** 當父級pid為0時,為最高級;
  61. ** 當遍歷到某條數(shù)據(jù)pid不為0時,則在該下標為pid這條數(shù)據(jù)中 增加一個下標children
  62. ** 并將這條數(shù)據(jù) 添加進下標為該pid的數(shù)據(jù)中children中去
  63. */
  64. private function gettreeitems($items)
  65. {
  66. $tree = array();
  67. foreach ($items as $item) {
  68. if(isset($items[$item['pid']])){
  69. $items[$item['pid']]['children'][] = &$items[$item['mid']];
  70. }else{
  71. $tree[] = &$items[$item['mid']];
  72. }
  73. }
  74. return $tree;
  75. }
  76. // 遞歸無限級菜單,使其轉換為二級菜單
  77. /*
  78. ** 創(chuàng)建一個空數(shù)組 當傳進的數(shù)組 沒有children下標這一數(shù)據(jù) 存進res空數(shù)組中
  79. ** 當某個數(shù)據(jù)有children下標時 將下標中里的數(shù)據(jù)存進 tem新的數(shù)組中
  80. ** 銷毀下標后的數(shù)據(jù)存進res空數(shù)組中 tem中的數(shù)組在檢測是否有children
  81. ** 有的話按157 158行文字處理 沒有的話按156行文字處理 然后返回res數(shù)組
  82. */
  83. private function formatMenus($items,&$res = array()){
  84. foreach($items as $item){
  85. if(!isset($item['children'])){
  86. $res[] = $item;
  87. }else{
  88. $tem = $item['children'];
  89. unset($item['children']);
  90. $res[] = $item;
  91. $this->formatMenus($tem,$res);
  92. }
  93. }
  94. return $res;
  95. }
  96. }

樹狀處理

  1. //樹狀處理 需要指針 轉換成無限級菜單
  2. private function gettreeitems($items)
  3. {
  4. $tree = array();
  5. foreach ($items as $item) {
  6. if(isset($items[$item['pid']])){
  7. $items[$item['pid']]['children'][] = &$items[$item['mid']];
  8. }else{
  9. $tree[] = &$items[$item['mid']];
  10. }
  11. }
  12. return $tree;
  13. }

遞歸無限級菜單,轉換為二級菜單

  1. // 遞歸無限級菜單,使其轉換為二級菜單
  2. private function formatMenus($items,&$res = array()){
  3. foreach($items as $item){
  4. if(!isset($item['children'])){
  5. $res[] = $item;
  6. }else{
  7. $tem = $item['children'];
  8. unset($item['children']);
  9. $res[] = $item;
  10. $this->formatMenus($tem,$res);
  11. }
  12. }
  13. return $res;
  14. }
本博文版權歸博主所有,轉載請注明地址!如有侵權、違法,請聯(lián)系admin@php.cn舉報處理!
全部評論 文明上網(wǎng)理性發(fā)言,請遵守新聞評論服務協(xié)議
0條評論
作者最新博文
關于我們 免責申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓,幫助PHP學習者快速成長!
關注服務號 技術交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時隨地碎片化學習
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號

  • 登錄PHP中文網(wǎng),和優(yōu)秀的人一起學習!
    全站2000+教程免費學