随心的博客

好记性不如个烂笔头,随心记录!

返回顶部

TP6管理后台实战第二天

第二天目标:

1、管理员登录模块
2、管理员添加,修改,删除
3、角色管理
 

进入开发:

1、下载安装TP6

安装最新的稳定版本的ThinkPHP:
composer create-project topthink/think thinkphp6
 
安装多应用模式扩展think-multi-app
composer require topthink/think-multi-app
 
安装视图
composer require topthink/think-view
 
安装验证码
composer require topthink/think-captcha
 
通过命令行创建2个应用
 
//创建前台应用
php think build index
//创建后台应用
php think build admin
删除app目录下的 controller 目录
 
运行项目:
 
创建一个虚拟主机 ,域名为 tp6.cn 映射到 thinkphp6/public 目录下
 
增加伪静态
location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=/$1 last; } }
 
运行项目:
 
访问前端应用
 
访问后端应用
 
均可正常访问
弄好之后,推送到github上面 打个标签 V0.1 tp6多应用
 

开发管理员登录模块 :

1、将.example.env 修改为 .env

修改 database,username,password 连接上数据库
 

2、在admin/controller下面

创建 Login.php 登录控制器
创建 Index.php 后台主页控制器
创建 AdminModel.php 管理员操作模型
将 BaseController.php 复制到app/admin 目录下 并修改命名空间
 
具体代码就不写这里了,会上传至 github ,把遇到的问题写一下。
 

3、遇到的问题

 
万事开头难,用TP6不太熟悉,一开始踩得几个坑和解决办法说一下:
 
3.1 Index控制器 继承 BaseController,但是提示找不到 BaseController
 
这个原因是,BaseController中的 命名空间没有修改,要改成
namespace app\admin;
 
3.2在 BaseController下面做登录验证,发现 redirect()函数无法跳转
 
这个需要自定义一个 rediectTo方法,放到 BaseController 里面
 
  /**
     * 自定义重定向方法
     * @param $args
     */
    public function redirectTo(...$args)
    {
        // 此处 throw new HttpResponseException 这个异常一定要写
        throw new HttpResponseException(redirect(...$args));
    }
然后在 BaseController初始化方法里面就可以调用了
 
 1 // 初始化
 2     protected function initialize()
 3     {
 4         //登录验证
 5         $nologin_arr = array(
 6             'login'
 7         );
 8         $controller =  request()->controller(true);
 9 
10         if(!in_array($controller,$nologin_arr))
11         {
12              //登录验证
13             $check_res = $this->adminLoginCheck();
14             if ($check_res['status']=='SUCCESS') {
15                 $this->admin_info = $check_res['data'];
16                 $this->admin_id = $this->admin_info['admin_id'];
17             }else{
18                 return $this->redirectTo('/admin/login/index');
19             }
20         }
21         //常用model
22         $this->adminModel = new AdminModel();
23         //写入操作日志
24         $this->adminModel->addOpLog($this->admin_info);
25     }

 

3.3 设置验证码的宽度和高度后,验证码显示不全。
 
在验证码的配置文件中设置宽度和高度后,原本显示4位字母,只能显示2-3位,还显示不全,晕死了。
 
解决办法:
不要再验证码配置文件中设置宽度和高度,直接恢复为初始值 0 ,然后在前端调用的时候,设置宽高即可,要使用自定义的验证码
 
前端代码:
 1 html:
 2 <img src="/admin/login/loginYzm"  onclick="changeYzm()" 
 3 style="width: 130px;height: 50px;" class="layadmin-user-login-codeimg" id="vercode_img">
 4 
 5 JS:
 6  <script type = 'text/javascript'>
 7     function changeYzm()
 8     {
 9         var time = Math.random();
10         $("#vercode_img").attr('src',"/admin/login/loginYzm?rands="+time);
11     }
12     </script>
 
控制器自定义验证码代码:
 
1 //页面顶部引入类
2 use think\captcha\facade\Captcha;
3 
4 //验证码
5 public function loginYzm()
6 {
7      return Captcha::create(); 
8 }

 

3.4 模板缓存问题,当 welcome方法加载模板后,我里面的文件内容都换成了另外一个了,但是还显示原来的。
 
解决办法:暴力一点,后台不怎么需要缓存的,直接把模板的缓存关闭即可。
 
找到 admin/config/view.php 配置文件添加
1 //关闭模板缓存
2   'tpl_cache' => false,

 

唠唠嗑:

第二天的工作到此结束了,只做了管理员的登录,退出,由于空余时间弄,没完成当天的任务。
实际上开发就是这样,看起来是只做了这两个内容,但是里面具体写的不少代码:
 
管理员登录页面
管理员登录操作
登录时记住密码
登录时的图形验证码
管理员登录验证--遇到问题了,废了不少时间
记录管理员登录日志
记录管理员操作日志
 
附录一些页面效果:

登录页:

 

 

控制台桌面:

 
管理员个人信息:
 

 

管理员修改密码:

 

 

管理员列表:
 

 

 

posted @ 2021-10-27 00:06  yangphp  阅读(1271)  评论(1编辑  收藏  举报