Blogger Information
Blog 41
fans 0
comment 0
visits 25808
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
后台四 菜单列表
自由之上
Original
1132 people have browsed it


一、菜单列表 模块
1、创建 菜单列表 视图模板


resources/views/admins/menus/index.blade.php

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>菜单列表</title>
  5. <link rel="stylesheet" type="text/css" href="/static/layui/css/layui.css">
  6. <script type="text/javascript" src="/static/layui/layui.js"></script>
  7. </head>
  8. <body style="padding: 10px;">
  9. <input type="hidden" name="mid" value="{{$pmenu['mid']}}">
  10. <div style="text-align: right;">
  11. @if($pmenu)
  12. <button class="layui-btn layui-btn-sm layui-btn-primary" onclick="back({{$pmenu['pid']}})">返回</button>
  13. @endif
  14. <button class="layui-btn layui-btn-sm" onclick="add()"><i class="layui-icon layui-icon-addition"></i>添加</button>
  15. </div>
  16. <table class="layui-table">
  17. <thead>
  18. <tr>
  19. <td>ID</td>
  20. <td>MID</td>
  21. <td>菜单名称</td>
  22. <td>controller</td>
  23. <td>action</td>
  24. <td>是否隐藏</td>
  25. <td>是否禁用</td>
  26. <td>操作</td>
  27. </tr>
  28. </thead>
  29. <tbody>
  30. @foreach($list as $key=>$item)
  31. <tr>
  32. <td>{{$key}}</td>
  33. <td>{{$item['mid']}}</td>
  34. <td>{{$item['title']}}</td>
  35. <td>{{$item['controller']}}</td>
  36. <td>{{$item['action']}}</td>
  37. <td>{!!$item['ishidden']==1?'<span style="coloer:#cdcdcd;">隐藏</span>':'显示' !!}</td>
  38. <td>{!!$item['status']==1?'<span style="color:red;">禁用</span>':'<span style="color:green;">正常</span>'!!}</td>
  39. <td>
  40. <button class="layui-btn layui-btn-xs layui-btn-primary" onclick="child({{$item['mid']}})">下级菜单</button>
  41. <button class="layui-btn layui-btn-xs" onclick="edit({{$item['mid']}})">修改</button>
  42. <button class="layui-btn layui-btn-xs layui-btn-danger" onclick="del({{$item['mid']}})">删除</button>
  43. </td>
  44. </tr>
  45. @endforeach
  46. </tbody>
  47. </table>
  48. </body>
  49. </html>
  50. <script type="text/javascript">
  51. layui.use(['layer'], function () {
  52. $ = layui.jquery;
  53. layer = layui.layer;
  54. });
  55. // 添加管理员
  56. function add() {
  57. var mid = $('input[name="mid"]').val();
  58. layer.open({
  59. type: 2,
  60. title: '添加菜单',
  61. shade: 0.3,
  62. area: ['500px', '450px'],
  63. content: '/admins/menus/add?pid=' + mid
  64. });
  65. }
  66. // 修改菜单
  67. function edit(mid) {
  68. layer.open({
  69. type: 2,
  70. title: '修改菜单',
  71. shade: 0.3,
  72. area: ['500px', '450px'],
  73. content: '/admins/menus/edit?mid=' + mid
  74. });
  75. }
  76. // 删除菜单
  77. function del(mid) {
  78. layer.confirm('确定要删除吗?', {
  79. icon: 3,
  80. btn: ['确定', '取消']
  81. }, function () {
  82. $.get('/admins/menus/del', {mid: mid}, function (res) {
  83. if (res.code > 0) {
  84. return layer.alert(res.msg, {icon: 2});
  85. }
  86. layer.msg(res.msg);
  87. setTimeout(function () {
  88. window.location.reload();
  89. }, 1000);
  90. }, 'json');
  91. });
  92. }
  93. // 下级菜单
  94. function child(mid) {
  95. window.location.href = '?mid=' + mid;
  96. }
  97. // 返回上一级
  98. function back(mid) {
  99. window.location.href = '/admins/menus/index?mid=' + mid;
  100. }
  101. </script>

2、创建 菜单列表 控制器

app/Http/Controllers/admins/Menus.php

  1. <?php
  2. namespace App\Http\Controllers\admins;
  3. use App\Http\Controllers\Controller;
  4. /**
  5. * 菜单 控制器
  6. * @package App\Http\Controllers\admins
  7. */
  8. class Menus extends Controller{
  9. }


3、菜单列表 控制器处理
app/Http/Controllers/admins/Menus.php

  1. use Illuminate\Http\Request;
  2. use Illuminate\Support\Facades\DB;
  3. use Illuminate\Support\Facades\Log;
  1. //菜单列表
  2. public function index(Request $req) {
  3. $mid = (int)$req->mid;//子列表查询有效
  4. Log::debug("菜单列表:mid:", [$mid]);
  5. $data['list'] = DB::table('admin_menu')->where('pid', $mid)->where('isdel', 0)->orderBy('mid', 'desc')->lists();
  6. $data['pmenu'] = DB::table('admin_menu')->where('mid', $mid)->item();
  7. return view('admins/menus/index', $data);
  8. }


4、菜单列表 注册路由

  1. use App\Http\Controllers\admins\Menus;
  2. //显示菜单列表
  3. Route::get('/admins/menus/index', [Menus::class, 'index']);



5、查看效果

二、添加与保存菜单 模块

1、创建 添加菜单 视图模板


resources/views/admins/menus/add.blade.php

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>添加菜单</title>
  5. <link rel="stylesheet" type="text/css" href="/static/layui/css/layui.css">
  6. <script type="text/javascript" src="/static/layui/layui.js"></script>
  7. </head>
  8. <body style="padding: 10px;">
  9. <div class="layui-form">
  10. @csrf
  11. <input type="hidden" name="pid" value="{{$pid}}">
  12. <div class="layui-form-item">
  13. <label class="layui-form-label">菜单名称</label>
  14. <div class="layui-input-block">
  15. <input type="text" name="title" class="layui-input">
  16. </div>
  17. </div>
  18. <div class="layui-form-item">
  19. <label class="layui-form-label">controller</label>
  20. <div class="layui-input-block">
  21. <input type="text" name="controller" class="layui-input">
  22. </div>
  23. </div>
  24. <div class="layui-form-item">
  25. <label class="layui-form-label">action</label>
  26. <div class="layui-input-block">
  27. <input type="text" name="action" class="layui-input">
  28. </div>
  29. </div>
  30. <div class="layui-form-item">
  31. <label class="layui-form-label">状态</label>
  32. <div class="layui-input-block">
  33. <input type="checkbox" name="ishidden" lay-skin="primary" title="隐藏">
  34. <input type="checkbox" name="status" lay-skin="primary" title="禁用">
  35. </div>
  36. </div>
  37. <div class="layui-input-block">
  38. <button class="layui-btn" onclick="save()">保存</button>
  39. </div>
  40. </div>
  41. </body>
  42. </html>
  43. <script type="text/javascript">
  44. layui.use(['form'], function () {
  45. $ = layui.jquery;
  46. form = layui.form;
  47. layer = layui.layer;
  48. });
  49. function save() {
  50. var pid = $('input[name="pid"]').val();
  51. var title = $('input[name="title"]').val();
  52. var controller = $('input[name="controller"]').val();
  53. var action = $('input[name="action"]').val();
  54. var ishidden = $('input[name="ishidden"]').is(':checked') ? 1 : 0;
  55. var status = $('input[name="status"]').is(':checked') ? 1 : 0;
  56. var _token = $('input[name="_token"]').val();
  57. if (title === '') {
  58. return layer.alert('请填写菜单名称', {icon: 2});
  59. }
  60. $.post('/admins/menus/save', {
  61. pid: pid,
  62. title: title,
  63. controller: controller,
  64. action: action,
  65. ishidden: ishidden,
  66. status: status,
  67. _token: _token
  68. }, function (res) {
  69. if (res.code > 0) {
  70. return layer.alert(res.msg, {icon: 2});
  71. }
  72. layer.msg(res.msg);
  73. setTimeout(function () {
  74. parent.window.location.reload();
  75. }, 1000);
  76. }, 'json');
  77. }
  78. </script>

2、添加与保存菜单 控制器处理
app/Http/Controllers/admins/Menus.php

  1. //添加菜单
  2. public function add(Request $req) {
  3. $data['pid'] = (int)$req->pid;
  4. return view('admins/menus/add', $data);
  5. }
  6. //保存菜单
  7. public function save(Request $req) {
  8. $data['pid'] = (int)$req->pid;
  9. $data['title'] = $req->title;
  10. $data['controller'] = $req->controller ? $req->controller : '';
  11. $data['action'] = $req->action ? $req->action : '';
  12. $data['ishidden'] = (int)$req->ishidden;
  13. $data['status'] = (int)$req->status;
  14. if ($data['title'] == '') {
  15. return json_encode(array('code' => 1, 'msg' => '菜单名称不能为空'));
  16. }
  17. DB::table('admin_menu')->insert($data);
  18. return json_encode(array('code' => 0, 'msg' => '保存成功'));
  19. }


3、添加与保存菜单 注册 路由
routes/web.php

  1. //添加菜单 处理
  2. Route::get('/admins/menus/add', [Menus::class, 'add']);
  3. //保存菜单 处理
  4. Route::post('/admins/menus/save', [Menus::class, 'save']);

4、查看效果

三、编辑与保存编辑菜单 模块

1、创建 编辑与保存编辑菜单 视图模板

resources/views/admins/menus/edit.blade.php

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>编辑菜单</title>
  5. <link rel="stylesheet" type="text/css" href="/static/layui/css/layui.css">
  6. <script type="text/javascript" src="/static/layui/layui.js"></script>
  7. </head>
  8. <body style="padding: 10px;">
  9. <div class="layui-form">
  10. @csrf
  11. <input type="hidden" name="mid" value="{{$item['mid']}}">
  12. <div class="layui-form-item">
  13. <label class="layui-form-label">菜单名称</label>
  14. <div class="layui-input-block">
  15. <input type="text" name="title" class="layui-input" value="{{$item['title']}}">
  16. </div>
  17. </div>
  18. <div class="layui-form-item">
  19. <label class="layui-form-label">controller</label>
  20. <div class="layui-input-block">
  21. <input type="text" name="controller" class="layui-input" value="{{$item['controller']}}">
  22. </div>
  23. </div>
  24. <div class="layui-form-item">
  25. <label class="layui-form-label">action</label>
  26. <div class="layui-input-block">
  27. <input type="text" name="action" class="layui-input" value="{{$item['action']}}">
  28. </div>
  29. </div>
  30. <div class="layui-form-item">
  31. <label class="layui-form-label">状态</label>
  32. <div class="layui-input-block">
  33. <input type="checkbox" name="ishidden" lay-skin="primary" title="隐藏" {{$item['ishidden']==1?'checked':''}}>
  34. <input type="checkbox" name="status" lay-skin="primary" title="禁用" {{$item['status']==1?'checked':''}}>
  35. </div>
  36. </div>
  37. <div class="layui-input-block">
  38. <button class="layui-btn" onclick="save()">保存</button>
  39. </div>
  40. </div>
  41. </body>
  42. </html>
  43. <script type="text/javascript">
  44. layui.use(['form'], function () {
  45. $ = layui.jquery;
  46. form = layui.form;
  47. layer = layui.layer;
  48. });
  49. //保存
  50. function save() {
  51. var mid = $('input[name="mid"]').val();
  52. var title = $('input[name="title"]').val();
  53. var controller = $('input[name="controller"]').val();
  54. var action = $('input[name="action"]').val();
  55. var ishidden = $('input[name="ishidden"]').is(':checked') ? 1 : 0;
  56. var status = $('input[name="status"]').is(':checked') ? 1 : 0;
  57. var _token = $('input[name="_token"]').val();
  58. if (title == '') {
  59. return layer.alert('请填写菜单名称', {icon: 2});
  60. }
  61. $.post('/admins/menus/save_edit', {
  62. mid: mid,
  63. title: title,
  64. controller: controller,
  65. action: action,
  66. ishidden: ishidden,
  67. status: status,
  68. _token: _token
  69. }, function (res) {
  70. if (res.code > 0) {
  71. return layer.alert(res.msg, {icon: 2});
  72. }
  73. layer.msg(res.msg);
  74. setTimeout(function () {
  75. parent.window.location.reload();
  76. }, 1000);
  77. }, 'json');
  78. }
  79. </script>

2、编辑与保存编辑菜单 控制器处理
app/Http/Controllers/admins/Menus.php

  1. //编辑菜单
  2. public function edit(Request $req) {
  3. $mid = (int)$req->mid;
  4. $data['item'] = DB::table('admin_menu')->where('mid', $mid)->item();
  5. return view('admins/menus/edit', $data);
  6. }
  7. // 保存修改
  8. public function save_edit(Request $req) {
  9. $mid = (int)$req->mid;
  10. $data['title'] = $req->title;
  11. $data['controller'] = $req->controller ? $req->controller : '';
  12. $data['action'] = $req->action ? $req->action : '';
  13. $data['ishidden'] = (int)$req->ishidden;
  14. $data['status'] = (int)$req->status;
  15. if ($data['title'] == '') {
  16. return json_encode(array('code' => 1, 'msg' => '菜单名称不能为空'));
  17. }
  18. DB::table('admin_menu')->where('mid', $mid)->update($data);
  19. return json_encode(array('code' => 0, 'msg' => '保存成功'));
  20. }


3、编辑与保存编辑菜单 注册路由
routes/web.php

  1. //编辑菜单 窗口
  2. Route::get('/admins/menus/edit',[Menus::class, 'edit']);
  3. //保存编辑菜单 处理
  4. Route::post('/admins/menus/save_edit',[Menus::class, 'save_edit']);


4、查看效果

四、删除菜单 模块

1、删除菜单 控制器处理
app/Http/Controllers/admins/Menus.php

  1. // 删除菜单
  2. public function del(Request $req) {
  3. $mid = (int)$req->mid;
  4. DB::table('admin_menu')->where('mid', $mid)->update(['isdel' => 1]);
  5. return json_encode(array('code' => 0, 'msg' => '删除成功'));
  6. }

2、删除菜单 注册路由

  1. //删除菜单 处理
  2. Route::get('/admins/menus/del',[Menus::class, 'del']);


3、查看效果

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post