博客列表 >后台一 搭建项目

后台一 搭建项目

自由之上
自由之上原创
2021年03月10日 21:42:471166浏览

一、使用phpStorm创建laravel项目

参考:https://www.jianshu.com/p/0941dcfc939a
1、使用Composer创建项目

2、选择composer.phar所在目录

3、添加php可执行文件

4、创建中

二、创建网站

1、使用小皮软件创建网站

2、查看效果

三、登录 数据表

1、新建数据库

2、链接数据库

3、使用sql建表、填充数据

  1. #【新建】管理员表
  2. DROP TABLE IF EXISTS `admin`;
  3. CREATE TABLE `admin` (
  4. `id` int(11) NOT NULL AUTO_INCREMENT,
  5. `username` varchar(250) NOT NULL DEFAULT '',
  6. `password` varchar(250) NOT NULL DEFAULT '',
  7. `ispasswd` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否第一次登陆0是,1否',
  8. `avatar` varchar(255) NOT NULL DEFAULT '' COMMENT '头像',
  9. `gid` int(11) NOT NULL DEFAULT '0',
  10. `real_name` varchar(250) NOT NULL DEFAULT '',
  11. `phone` varchar(50) NOT NULL DEFAULT '',
  12. `lastlogin` int(11) NOT NULL DEFAULT '0',
  13. `add_time` int(10) NOT NULL DEFAULT '0',
  14. `status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否禁用,0正常1禁用',
  15. PRIMARY KEY (`id`)
  16. ) ENGINE=MyISAM AUTO_INCREMENT=29 DEFAULT CHARSET=utf8;
  17. #【插入】管理员表添加数据(admin-654321 admin222-123456)
  18. INSERT INTO `admin` VALUES ('1', 'admin', '$2y$10$EWEAN2vfBCNINO97elISIOc/.PWnbEOS8ihfOpABmsOG.YXPwdiaG', '2', '', '1', '张三', '', '1604212223', '1515154827', '0');
  19. INSERT INTO `admin` VALUES ('7', 'test', '$2y$10$EWEAN2vfBCNINO97elISIOc/.PWnbEOS8ihfOpABmsOG.YXPwdiaG', '2', '', '10', '张五五', '', '0', '1543409778', '0');
  20. INSERT INTO `admin` VALUES ('23', 'aaccdd', '$2y$10$UwJYnTFHEoZVSjc0PhGMeOQUFNrsOKdAihTWmr4fgeZqfbJFPoN4u', '0', '', '7', '测试用户', '', '0', '0', '1');
  21. INSERT INTO `admin` VALUES ('28', 'admin222', '$2y$10$4JqE/D5WdzfhtcSSlgVpoe89EetGcXy.9NCM/jaAkX9CV9mDZ4Acu', '0', '', '7', '', '', '0', '0', '0');

四、登录模块

1、添加资源文件
layui.rar
下载资源解压后放到项目publish目录下static文件夹下

2、添加验证码插件

  1. composer require gregwar/captcha

3、创建 视图模板 文件

4、编辑 视图模板 文件

resources/views/admins/account/login.blade.php

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport"
  6. content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  7. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8. <title>后台登录</title>
  9. <link rel="stylesheet" type="text/css" href="/static/layui/css/layui.css">
  10. <script type="text/javascript" src="/static/layui/layui.js"></script>
  11. </head>
  12. <body style="background:#1E9FFF">
  13. <div
  14. style="position: absolute;left: 50%;margin-left: -240px;width:480px;height:300px;margin-top: 200px;background-color: #fff;border-radius: 4px;box-shadow: 5px 5px 20px #444;padding:10px">
  15. <p style="font-size: 22px;color:#555;text-align: center;margin:15px 0px">XX后台管理系统</p>
  16. <hr>
  17. <div class="layui-form">
  18. @csrf
  19. <div class="layui-form-item">
  20. <label class="layui-form-label">用户名</label>
  21. <div class="layui-input-inline">
  22. <input type="text" class="layui-input" name="username" placeholder="请填写用户名">
  23. </div>
  24. </div>
  25. <div class="layui-form-item">
  26. <label for="" class="layui-form-label">密码</label>
  27. <div class="layui-input-inline">
  28. <input type="password" class="layui-input" name="pwd" placeholder="请填写密码">
  29. </div>
  30. </div>
  31. <div class="layui-form-item">
  32. <label class="layui-form-label">验证码</label>
  33. <div class="layui-input-inline" style="width:60px;">
  34. <input type="text" class="layui-input" name="vericode">
  35. </div>
  36. <img name="img_vericode" src="/admins/account/captcha"
  37. style="height:36px;border:1px solid black; cursor:pointer;" onclick="changeImg()"/>
  38. </div>
  39. <div class="layui-input-block">
  40. <button class="layui-btn" onclick="doLogin()">登录</button>
  41. </div>
  42. </div>
  43. </div>
  44. <script>
  45. layui.use(['layer'], function () {
  46. $ = layui.jquery;
  47. layer = layui.layer;
  48. changeImg();//等框架加载完再调用方法
  49. });
  50. /**
  51. * 更新验证码1
  52. */
  53. function changeImg() {
  54. var url = '/admins/account/captcha?adf=' + Math.random();
  55. $('img[name="img_vericode"]').attr('src', url);
  56. }
  57. /**
  58. * 去登录
  59. */
  60. function doLogin() {
  61. const username = $('input[name="username"]').val();
  62. const pwd = $('input[name="pwd"]').val();
  63. const vericode = $('input[name="vericode"]').val();
  64. const _token = $('input[name="_token"]').val();
  65. if (username == '') {
  66. return layer.alert('请填写用户名', {icon: 2});
  67. }
  68. if (pwd == '') {
  69. return layer.alert('请填写密码', {icon: 2});
  70. }
  71. if (vericode == '') {
  72. return layer.alert('请填写验证码', {icon: 2});
  73. }
  74. $.post('/admins/account/dologin', {
  75. username: username,
  76. pwd: pwd,
  77. vericode: vericode,
  78. _token: _token
  79. }, function (res) {
  80. if (res.code > 0) {
  81. return layer.alert(res.msg, {icon: 2});
  82. }
  83. layer.msg(res.msg);
  84. setTimeout(function () {
  85. window.location.href = '/admins/home/index';
  86. }, 1000);
  87. }, 'json');
  88. }
  89. </script>
  90. </body>
  91. </html>

5、修改用户模型
app/Models/User.php

  1. protected $table='admin';//更新用户表名


6、创建 控制器

app/Http/Controllers/admins/Account.php

  1. <?php
  2. namespace App\Http\Controllers\admins;
  3. use App\Http\Controllers\Controller;
  4. use Gregwar\Captcha\CaptchaBuilder;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\Auth;
  7. use Illuminate\Support\Facades\DB;
  8. /**
  9. * 后台账号
  10. * Class Account
  11. * @package App\Http\Controllers\admins
  12. */
  13. class Account extends Controller {
  14. /**
  15. * 登录
  16. */
  17. public function login() {
  18. return view('/admins/account/login');
  19. }
  20. /**
  21. * 生成验证码
  22. */
  23. public function captcha() {
  24. //实例化验证码类
  25. $builder = new CaptchaBuilder;
  26. $builder->build();
  27. session_start();//开启session
  28. $_SESSION['phrase'] = $builder->getPhrase();
  29. header('Content-type: image/jpeg');//生成到页面
  30. $builder->output();
  31. }
  32. //处理登录
  33. public function doLogin(Request $req) {
  34. $username = $req->username;
  35. $pwd = $req->pwd;
  36. $verICode = $req->vericode;
  37. if ($username == '') {
  38. return json_encode(array('code' => 1, 'msg' => '用户名不能为空'));
  39. }
  40. if ($pwd == '') {
  41. return json_encode(array('code' => 1, 'msg' => '密码不能为空'));
  42. }
  43. if ($verICode == '') {
  44. return json_encode(array('code' => 1, 'msg' => '验证码不能为空'));
  45. }
  46. session_start();
  47. if (strtolower($_SESSION['phrase']) != strtolower($verICode)) {
  48. return json_encode(array('code' => 1, 'msg' => '验证码不正确'));
  49. }
  50. //验证用户
  51. $res = Auth::attempt(['username' => $username, 'password' => $pwd]);
  52. if (!$res) {
  53. return json_encode(array('code' => 1, 'msg' => '用户名或密码错误'));
  54. }
  55. //更新登录时间
  56. DB::table('admin')->where('username', $username)->update(array('lastlogin' => time()));
  57. return json_encode(array('code' => 0, 'msg' => '登录成功'));
  58. }
  59. //退出登录
  60. public function logout() {
  61. Auth::logout();
  62. return json_encode(array('code' => 0, 'msg' => '退出登录成功'));
  63. }
  64. }

7、注册路由

routes/web.php

  1. use App\Http\Controllers\admins\Account;
  2. //name定义路由名称 login:laravel默认登录路由名称
  3. Route::get('/admins/account/login', [Account::class, 'login'])->name('login');
  4. //验证码
  5. Route::get('/admins/account/captcha', [Account::class,'captcha']);
  6. //处理登录
  7. Route::post('/admins/account/dologin',[Account::class,'doLogin']);
  8. //注销
  9. Route::get('/admins/account/logout', [Account::class, 'logout']);


8、解决问题
http://renwushizhan1/admins/account/login


【解决】添加伪静态

public/.htaccess

  1. <IfModule mod_rewrite.c>
  2. Options -MultiViews
  3. RewriteEngine On
  4. RewriteCond %{REQUEST_FILENAME} !-d
  5. RewriteCond %{REQUEST_FILENAME} !-f
  6. RewriteRule ^ index.php [L]
  7. </IfModule>

9、查看效果
http://renwushizhan1/admins/account/login
登录界面

登录成功后:

五、中间件

1、创建中间件文件
使用中间件进行权限验证

app/Http/Middleware/Rightvalidate.php

  1. <?php
  2. namespace App\Http\Middleware;
  3. use Closure;
  4. use Illuminate\Support\Facades\Auth;
  5. use Illuminate\Support\Facades\DB;
  6. /**
  7. * 权限验证中间件
  8. * Class Rightvalidate
  9. * @package App\Http\Middleware
  10. */
  11. class Rightvalidate {
  12. public function handle($request, Closure $next) {
  13. $admin = Auth::user();
  14. $gid = (int)$admin->gid;
  15. $group = DB::table('admin_group')->where('gid', $gid)->item();
  16. if (!$group) {
  17. return $this->_norights($request, '该角色不存在');
  18. }
  19. $rights = [];
  20. if ($group['rights']) {
  21. $rights = json_decode($group['rights'], true);
  22. }
  23. //当前访问的是哪个菜单?(读取访问路由信息)
  24. $res = $request->route()->action['controller'];//App\Http\Controllers\admins\Home@index
  25. $res = explode('\\', $res);
  26. $res = array_pop($res);//Home@index
  27. $res = explode('@', $res);
  28. //当前url对应的菜单
  29. $cur_menu = DB::table('admin_menu')->where('controller', $res[0])->where('action', $res[1])->where('isdel', 0)->item();
  30. if (!$cur_menu) {
  31. return $this->_norights($request, '该功能不存在');
  32. }
  33. if ($cur_menu['status'] == 1) {
  34. return $this->_norights($request, '该功能已被禁用');
  35. }
  36. //判断一下该菜单的mid在不在$rights数组中
  37. if (!in_array($cur_menu['mid'], $rights)) {
  38. return $this->_norights($request, '权限不足');
  39. }
  40. $admin->group_title = $group['title'];
  41. $admin->rights = $rights;
  42. $request->admin = $admin;
  43. return $next($request);
  44. }
  45. //封装
  46. private function _norights($request, $msg) {
  47. if ($request->ajax()) {
  48. return response(json_encode(array('code' => 1, 'msg' => $msg)));
  49. }
  50. return response($msg);
  51. }
  52. }

2、注册中间件

app/Http/Kernel.php

  1. //权限验证中间件
  2. 'rights'=>\App\Http\Middleware\Rightvalidate::class,

六、提供者

1、创建提供者文件

app/Providers/DBServiceProvider.php

  1. <?php
  2. namespace App\Providers;
  3. use Illuminate\Database\Query\Builder as QueryBuilder;
  4. use Illuminate\Support\ServiceProvider;
  5. /**
  6. * 数据库服务提供者
  7. * Class DBServiceProvider
  8. * @package App\Providers
  9. */
  10. class DBServiceProvider extends ServiceProvider {
  11. /**
  12. * 内置函数,系统调用
  13. */
  14. public function boot() {
  15. //查询一条记录 注入名为item的函数
  16. QueryBuilder::macro('item', function () {
  17. $data = $this->first();
  18. return $data ? (array)$data : false;
  19. });
  20. }
  21. }

2、注册提供者

config/app.php

  1. //扩展DBServiceProvider
  2. App\Providers\DBServiceProvider::class,

七、首页 数据表

  1. #【新建】 人员分组表
  2. DROP TABLE IF EXISTS `admin_group`;
  3. CREATE TABLE `admin_group` (
  4. `gid` int(11) NOT NULL AUTO_INCREMENT,
  5. `title` varchar(50) NOT NULL,
  6. `rights` text NOT NULL,
  7. PRIMARY KEY (`gid`)
  8. ) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;
  9. #【插入】 人员分组表
  10. INSERT INTO `admin_group` VALUES ('1', '开发人员', '[3,4,18,5,6,7,167,10,11,12,13,14,152,153,155,166,168,15,17,62,84,120,121,102,116,122,123,124,125,128,129,130,162,174,175,126,127,131,132,133,134,135,136,137,165,138,139,140,141,142,143,144,145,146,147,148,149,160,169,170,176]');
  11. INSERT INTO `admin_group` VALUES ('7', '系统管理员', '[3,4,18,5,6,7,8,13,14,152]');
  12. INSERT INTO `admin_group` VALUES ('10', '客服人员', '[3,4,18,5,6,7,8,11,12,13,153,155,15,17,62,84]');
  13. #【新建】菜单表
  14. DROP TABLE IF EXISTS `admin_menu`;
  15. CREATE TABLE `admin_menu` (
  16. `mid` int(11) NOT NULL AUTO_INCREMENT,
  17. `pid` int(11) NOT NULL DEFAULT '0' COMMENT '上级菜单',
  18. `ishidden` tinyint(1) NOT NULL COMMENT '隐藏菜单',
  19. `ord` smallint(6) NOT NULL DEFAULT '0' COMMENT '排序',
  20. `status` tinyint(1) NOT NULL COMMENT '状态:0启用,1禁用',
  21. `icon` varchar(50) NOT NULL DEFAULT '',
  22. `title` varchar(250) NOT NULL COMMENT '名称',
  23. `controller` varchar(20) NOT NULL DEFAULT '' COMMENT '操作',
  24. `action` varchar(20) NOT NULL DEFAULT '' COMMENT '方法',
  25. `isdel` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已删除,0正常,1已删除',
  26. PRIMARY KEY (`mid`),
  27. KEY `order` (`ord`),
  28. KEY `module` (`controller`,`action`),
  29. KEY `pid` (`pid`)
  30. ) ENGINE=MyISAM AUTO_INCREMENT=180 DEFAULT CHARSET=utf8;
  31. #【插入】菜单
  32. INSERT INTO `admin_menu` VALUES ('3', '0', '1', '0', '0', '', '系统首页', 'home', 'index', '0');
  33. INSERT INTO `admin_menu` VALUES ('4', '3', '1', '0', '0', '', '欢迎页面', 'home', 'welcome', '0');
  34. INSERT INTO `admin_menu` VALUES ('5', '0', '0', '0', '0', 'fa-users', '管理帐号', 'admin', '', '0');
  35. INSERT INTO `admin_menu` VALUES ('6', '5', '0', '0', '0', '', '帐号列表', 'admin', 'index', '0');
  36. INSERT INTO `admin_menu` VALUES ('7', '5', '1', '0', '0', '', '帐号添加', 'admin', 'add', '0');
  37. INSERT INTO `admin_menu` VALUES ('8', '5', '1', '0', '0', '', '帐号保存', 'admin', 'save', '0');
  38. INSERT INTO `admin_menu` VALUES ('167', '5', '1', '0', '0', '', '保存修改', 'Groups', 'save_edit', '0');
  39. INSERT INTO `admin_menu` VALUES ('10', '5', '1', '0', '0', '', '分组添加', 'groups', 'add', '0');
  40. INSERT INTO `admin_menu` VALUES ('11', '5', '1', '0', '0', '', '分组保存', 'groups', 'save', '0');
  41. INSERT INTO `admin_menu` VALUES ('12', '5', '0', '0', '0', '', '权限菜单', 'menus', 'index', '0');
  42. INSERT INTO `admin_menu` VALUES ('13', '5', '1', '0', '0', '', '菜单添加', 'menus', 'add', '0');
  43. INSERT INTO `admin_menu` VALUES ('14', '5', '1', '0', '0', '', '菜单保存', 'menus', 'save', '0');
  44. INSERT INTO `admin_menu` VALUES ('15', '0', '0', '0', '0', 'fa-cogs', '网站设置', 'setting', '', '0');
  45. INSERT INTO `admin_menu` VALUES ('116', '0', '0', '0', '0', '', '文章管理', 'article', '', '0');
  46. INSERT INTO `admin_menu` VALUES ('17', '15', '1', '0', '0', '', '设置保存', 'setting', 'save', '0');
  47. INSERT INTO `admin_menu` VALUES ('62', '15', '0', '1', '0', '', '友情链接', 'setting', 'friend_link', '0');
  48. INSERT INTO `admin_menu` VALUES ('18', '3', '1', '0', '0', '', '首页菜单', 'Home', 'ajax_get_left_menu', '0');
  49. INSERT INTO `admin_menu` VALUES ('84', '15', '1', '0', '0', '', '保存友链', 'setting', 'save_link', '0');
  50. INSERT INTO `admin_menu` VALUES ('120', '15', '1', '0', '0', '', '添加友链', 'setting', 'add_link', '0');
  51. INSERT INTO `admin_menu` VALUES ('121', '15', '1', '0', '0', '', '删除友链', 'setting', 'del_link', '0');
  52. INSERT INTO `admin_menu` VALUES ('182', '15', '1', '0', '0', '', '修改友链', 'setting', 'edit_link', '0');
  53. INSERT INTO `admin_menu` VALUES ('122', '116', '0', '0', '0', '', '文章列表', 'article', 'index', '0');
  54. INSERT INTO `admin_menu` VALUES ('102', '15', '0', '0', '0', '', '基础设置', 'setting', 'index', '0');
  55. INSERT INTO `admin_menu` VALUES ('103', '102', '1', '0', '0', '', '保存基础设置', 'setting', 'save_basesetting', '0');
  56. INSERT INTO `admin_menu` VALUES ('123', '116', '1', '0', '0', '', '添加文章', 'article', 'add', '0');
  57. INSERT INTO `admin_menu` VALUES ('124', '116', '1', '0', '0', '', '保存文章', 'article', 'save', '0');
  58. INSERT INTO `admin_menu` VALUES ('125', '116', '1', '0', '0', '', '删除文章', 'article', 'del', '0');
  59. INSERT INTO `admin_menu` VALUES ('126', '0', '1', '0', '0', '', '文件管理', 'files', '', '0');
  60. INSERT INTO `admin_menu` VALUES ('127', '126', '1', '0', '0', '', '图片上传', 'files', 'uploadimg', '0');
  61. INSERT INTO `admin_menu` VALUES ('128', '116', '0', '0', '0', '', '文章分类', 'article', 'cates', '0');
  62. INSERT INTO `admin_menu` VALUES ('129', '116', '1', '0', '0', '', '保存分类', 'article', 'save_cates', '0');
  63. INSERT INTO `admin_menu` VALUES ('130', '116', '1', '0', '0', '', '添加分类', 'article', 'add_cates', '0');
  64. INSERT INTO `admin_menu` VALUES ('131', '0', '0', '0', '0', '', '商品管理', 'Product', '', '0');
  65. INSERT INTO `admin_menu` VALUES ('132', '131', '0', '0', '0', '', '商品列表', 'Product', 'index', '0');
  66. INSERT INTO `admin_menu` VALUES ('133', '131', '1', '0', '0', '', '商品添加', 'Product', 'add', '0');
  67. INSERT INTO `admin_menu` VALUES ('134', '131', '1', '0', '0', '', '商品保存', 'Product', 'save', '0');
  68. INSERT INTO `admin_menu` VALUES ('135', '131', '0', '0', '0', '', '商品分类', 'Product', 'cates', '0');
  69. INSERT INTO `admin_menu` VALUES ('136', '131', '1', '0', '0', '', '添加分类', 'Product', 'add_cate', '0');
  70. INSERT INTO `admin_menu` VALUES ('137', '131', '1', '0', '0', '', '保存分类', 'Product', 'save_cate', '0');
  71. INSERT INTO `admin_menu` VALUES ('138', '0', '0', '0', '0', '', '订单管理', 'orders', '', '0');
  72. INSERT INTO `admin_menu` VALUES ('139', '138', '0', '0', '0', '', '订单列表', 'orders', 'index', '0');
  73. INSERT INTO `admin_menu` VALUES ('140', '138', '1', '0', '0', '', '订单修改', 'orders', 'add', '0');
  74. INSERT INTO `admin_menu` VALUES ('141', '138', '1', '0', '0', '', '订单保存', 'orders', 'save', '0');
  75. INSERT INTO `admin_menu` VALUES ('142', '0', '0', '0', '0', '', '视频管理', 'video', '', '0');
  76. INSERT INTO `admin_menu` VALUES ('143', '142', '0', '0', '0', '', '视频列表', 'video', 'index', '0');
  77. INSERT INTO `admin_menu` VALUES ('144', '142', '1', '0', '0', '', '视频添加', 'video', 'add', '0');
  78. INSERT INTO `admin_menu` VALUES ('145', '142', '1', '0', '0', '', '上传视频', 'video', 'upload_video', '0');
  79. INSERT INTO `admin_menu` VALUES ('146', '142', '1', '0', '0', '', '保存视频', 'video', 'save', '0');
  80. INSERT INTO `admin_menu` VALUES ('147', '142', '0', '0', '0', '', '视频分类', 'video', 'cates', '0');
  81. INSERT INTO `admin_menu` VALUES ('148', '142', '1', '0', '0', '', '添加分类', 'video', 'add_cate', '0');
  82. INSERT INTO `admin_menu` VALUES ('149', '142', '1', '0', '0', '', '保存分类', 'video', 'save_cate', '0');
  83. INSERT INTO `admin_menu` VALUES ('150', '0', '0', '0', '0', '', '用户管理', 'members', '', '0');
  84. INSERT INTO `admin_menu` VALUES ('151', '150', '0', '0', '0', '', '用户列表', 'members', 'index', '0');
  85. INSERT INTO `admin_menu` VALUES ('152', '5', '1', '0', '0', '', '帐号修改', 'Admin', 'edit', '0');
  86. INSERT INTO `admin_menu` VALUES ('153', '5', '1', '0', '0', '', '帐号删除', 'Admin', 'del', '0');
  87. INSERT INTO `admin_menu` VALUES ('163', '0', '0', '0', '0', '', '后台客服', '', '', '1');
  88. INSERT INTO `admin_menu` VALUES ('155', '5', '1', '0', '0', '', '菜单删除', 'Menus', 'del', '0');
  89. INSERT INTO `admin_menu` VALUES ('160', '0', '1', '0', '0', '', '菜单编辑', 'Menus', 'edit', '0');
  90. INSERT INTO `admin_menu` VALUES ('162', '116', '1', '0', '0', '', '修改状态', 'Article', 'chks', '0');
  91. INSERT INTO `admin_menu` VALUES ('164', '163', '0', '0', '0', '', '客户接待', 'servicer', 'index', '0');
  92. INSERT INTO `admin_menu` VALUES ('165', '131', '1', '0', '0', '', '搜索分类', 'Product', 'search_product_cates', '0');
  93. INSERT INTO `admin_menu` VALUES ('166', '5', '1', '0', '0', '', '修改分组', 'Groups', 'edit', '0');
  94. INSERT INTO `admin_menu` VALUES ('168', '5', '0', '0', '0', '', '分组列表', 'Groups', 'index', '0');
  95. INSERT INTO `admin_menu` VALUES ('169', '0', '1', '0', '0', '', '保存修改的菜单', 'Menus', 'save_edit', '0');
  96. INSERT INTO `admin_menu` VALUES ('170', '0', '0', '0', '0', '', '商户管理', 'Merchant', '', '0');
  97. INSERT INTO `admin_menu` VALUES ('174', '116', '1', '0', '0', '', '文章修改', 'Article', 'edit', '0');
  98. INSERT INTO `admin_menu` VALUES ('175', '116', '1', '0', '0', '', '保存修改', 'Article', 'save_edit', '0');
  99. INSERT INTO `admin_menu` VALUES ('176', '170', '0', '0', '0', '', '商户列表', 'Merchant', 'index', '0');

八、首页模块

1、创建视图模板文件

2、编辑 首页 视图模板 文件

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

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport"
  6. content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  7. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8. <title>欢迎使用XXX后台管理系统</title>
  9. <link rel="stylesheet" href="/static/layui/css/layui.css">
  10. <script src="/static/layui/layui.js"></script>
  11. <style>
  12. .header {
  13. background: #01aaed;
  14. height: 50px;
  15. line-height: 50px;
  16. color: #fff;
  17. padding: 0px 20px;
  18. }
  19. .header .logo-txt {
  20. font-size: 20px;
  21. }
  22. .header .account {
  23. float: right;
  24. }
  25. .header .account a {
  26. margin-left: 5px;
  27. color: #fff;
  28. }
  29. .menus {
  30. width: 200px;
  31. height: calc(100% - 50px);
  32. position: absolute;
  33. background: #333;
  34. }
  35. .main {
  36. position: absolute;
  37. left: 200px;
  38. right: 0px;
  39. height: calc(100% - 50px)
  40. }
  41. .main iframe {
  42. width: 100%;
  43. height: 100%;
  44. }
  45. </style>
  46. </head>
  47. <body>
  48. <div class="header">
  49. <span class="logo-txt">XXX后台管理系统</span>
  50. <div class="account">
  51. <span>{{$username}}[{{$group_title}}]</span>
  52. <a href="javascript:;" onclick="logout()">退出</a>
  53. </div>
  54. </div>
  55. {{--左侧菜单--}}
  56. <div class="menus">
  57. <ul class="layui-nav layui-nav-tree" lay-filter="test">
  58. {{-- 遍历主菜单--}}
  59. @foreach($plist as $key=>$p)
  60. <li class="layui-nav-item {{$key==0?'layui-nav-itemed':''}}">
  61. <a href="javascript:">{{$p->title}}</a>
  62. <dl class="layui-nav-child">
  63. {{-- 遍历子菜单--}}
  64. @foreach($p->children as $val)
  65. <dd>
  66. <a href="javascript:" onclick="firememu(this)"
  67. controller="{{$val->controller}}" action="{{$val->action}}">
  68. {{$val->title}}
  69. </a>
  70. </dd>
  71. @endforeach
  72. </dl>
  73. </li>
  74. @endforeach
  75. </ul>
  76. </div>
  77. {{--右侧内容区--}}
  78. <div class="main">
  79. <iframe src="/admins/home/welcome" frameborder="0"></iframe>
  80. </div>
  81. <script>
  82. layui.use(['element', 'layer'], function () {
  83. $ = layui.jquery;
  84. element = layui.element;
  85. layer = layui.layer;
  86. });
  87. // 更新子菜单内容
  88. function firememu(obj) {
  89. const controller = $(obj).attr('controller');
  90. const action = $(obj).attr('action');
  91. const url = '/admins/' + controller + '/' + action;
  92. $('.main iframe').attr('src', url);
  93. }
  94. //退出登录
  95. function logout() {
  96. layer.confirm('您真要退出吗?', {
  97. icon: 3,
  98. btn: ['确定', '取消']
  99. }, function () {
  100. $.get('/admins/account/logout', {}, function (res) {
  101. if (res > 0) {
  102. return layer.alert(res.msg, {icon: 2});
  103. }
  104. layer.msg(res.msg);
  105. setTimeout(function () {
  106. window.location.href = '/admins/account/login';
  107. }, 1000)
  108. }, 'json');
  109. })
  110. }
  111. </script>
  112. </body>
  113. </html>

3、创建 欢迎界面 视图模板文件

4、编辑欢迎界面 视图模板

resources/views/admins/home/welcome.blade.php

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport"
  6. content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  7. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8. <title>欢迎页面</title>
  9. </head>
  10. <body>
  11. <div style="text-align: center;color:gray;font-size: 28px;margin-top: 50px;">
  12. 欢迎使用###后台管理系统
  13. </div>
  14. </body>
  15. </html>

5、创建控制器

app/Http/Controllers/admins/Home.php

  1. <?php
  2. namespace App\Http\Controllers\admins;
  3. use App\Http\Controllers\Controller;
  4. use Illuminate\Http\Request;
  5. use Illuminate\Support\Facades\DB;
  6. /**
  7. * 后台主页
  8. * Class Home
  9. * @package App\Http\Controllers\admins
  10. */
  11. class Home extends Controller {
  12. /**
  13. * 进入主页
  14. * @param Request $req
  15. * @return \Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View
  16. */
  17. public function index(Request $req) {
  18. $data['username'] = $req->admin->username;
  19. $data['group_title'] = $req->admin->group_title;
  20. $rights = $req->admin->rights;
  21. //一级菜单
  22. $data['plist'] = DB::table('admin_menu')->where('pid', 0)->where('ishidden', 0)->where('isdel', 0)
  23. ->where('status', 0)->whereIn('mid', $rights)->get()->toArray();
  24. foreach ($data['plist'] as $key => $val) {
  25. //查询每个菜单的子菜单
  26. $chds = DB::table('admin_menu')->where('pid', $val->mid)->where('ishidden', 0)->where('isdel', 0)
  27. ->where('status', 0)->whereIn('mid', $rights)->get()->toArray();
  28. $data['plist'][$key]->children = $chds;
  29. }
  30. return view('admins/home/index', $data);
  31. }
  32. //主内容区欢迎页面
  33. public function welcome() {
  34. return view('admins/home/welcome');
  35. }
  36. }

6、注册路由

routes/web.php

  1. use App\Http\Controllers\admins\Home;
  2. //后台主页(auth权限验证,rights权利验证-自定义中间件)
  3. Route::namespace('admins')->middleware(['auth', 'rights'])->group(function () {
  4. //首页
  5. Route::get('/admins/home/index', [Home::class, 'index']);
  6. //欢迎模块
  7. Route::get('/admins/home/welcome', [Home::class, 'welcome']);
  8. });


7、查看效果
http://renwushizhan1/admins/home/index

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议