Menu.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. /**
  3. * lemocms
  4. * ============================================================================
  5. * 版权所有 2018-2027 lemocms,并保留所有权利。
  6. * 网站地址: https://www.lemocms.com
  7. * ----------------------------------------------------------------------------
  8. * 采用最新Thinkphp6实现
  9. * ============================================================================
  10. * Author: yuege
  11. * Date: 2019/8/2
  12. */
  13. namespace app\admin\controller;
  14. use app\admin\controller\Base;
  15. use app\admin\model\AuthRule;
  16. use app\common\controller\Backend;
  17. use think\facade\Db;
  18. use think\facade\Request;
  19. class Menu extends Backend
  20. {
  21. public function initialize()
  22. {
  23. parent::initialize(); // TODO: Change the autogenerated stub
  24. }
  25. //获取左侧主菜单
  26. public static function authMenu($arr,$pid=0,$rules=[]){
  27. $authrules = explode(',',session('admin.rules'));
  28. $list =array();
  29. foreach ($arr as $k=>$v){
  30. $v['href'] = strtolower(url($v['href']));
  31. if (session('admin.id') != 1) {
  32. if ($v['pid'] == $pid){
  33. if(in_array($v['id'],$authrules)){
  34. $v['child'] = self::authMenu($arr,$v['id']);
  35. $list[] = $v;
  36. }
  37. }
  38. }else{
  39. if ($v['pid'] == $pid) {
  40. $v['child'] = self::authMenu($arr, $v['id']);
  41. $list[] = $v;
  42. }
  43. }
  44. }
  45. return $list;
  46. }
  47. /*
  48. * 自定义菜单排列
  49. */
  50. public static function menu($cate, $lefthtml = '|— ', $pid = 0, $lvl = 0, $leftpin = 0)
  51. {
  52. $arr = array();
  53. foreach ($cate as $v) {
  54. if ($v['pid'] == $pid) {
  55. $v['lvl'] = $lvl + 1;
  56. $v['leftpin'] = $leftpin + 0;
  57. $v['lefthtml'] = str_repeat($lefthtml, $lvl);
  58. $v['ltitle'] = $v['lefthtml'] . $v['title'];
  59. $arr[] = $v;
  60. $arr = array_merge($arr, self::menu($cate, $lefthtml, $v['id'], $lvl + 1, $leftpin + 20));
  61. }
  62. }
  63. return $arr;
  64. }
  65. public static function cate($cate, $lefthtml = '|— ', $pid = 0, $lvl = 0, $leftpin = 0)
  66. {
  67. $arr = array();
  68. foreach ($cate as $v) {
  69. if ($v['pid'] == $pid) {
  70. $v['lvl'] = $lvl + 1;
  71. $v['leftpin'] = $leftpin + 0;
  72. $v['lefthtml'] = str_repeat($lefthtml, $lvl);
  73. $arr[] = $v;
  74. $arr = array_merge($arr, self::menu($cate, $lefthtml, $v['id'], $lvl + 1, $leftpin + 20));
  75. }
  76. }
  77. return $arr;
  78. }
  79. public static function auth($cate, $rules, $pid = 0)
  80. {
  81. $arr = array();
  82. $rulesArr = explode(',', $rules);
  83. foreach ($cate as $v) {
  84. if ($v['pid'] == $pid) {
  85. if (in_array($v['id'], $rulesArr)) {
  86. $v['checked'] = true;
  87. }
  88. $v['open'] = true;
  89. $arr[] = $v;
  90. $arr = array_merge($arr, self::auth($cate, $v['id'], $rules));
  91. }
  92. }
  93. return $arr;
  94. }
  95. }