• 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=" 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,

    唠唠嗑:

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

    登录页:

     

     

    控制台桌面:

     
    管理员个人信息:
     

     

    管理员修改密码:

     

     

    管理员列表:
     

     

     

    但行好事,莫问前程!

    本文来自博客园,作者:yangphp,转载请注明原文链接:https://www.cnblogs.com/ypeih/p/15468605.html

  • 相关阅读:
    新世纪五笔字根实例
    7 天学会新世纪五笔——原来五笔是个拼字游戏
    Ubuntu 上安装使用 ibus-rime(超实用)
    Linux 上安装最新版 Brave Browser
    安装使用 GoldenDict 查词神器 (Windows/Mac/Linux)
    1.2-Physical Ergonomics
    Django
    前端
    python一些简单的入门知识
    触发器、函数、存储过程、视图
  • 原文地址:https://www.cnblogs.com/ypeih/p/15468605.html
Copyright © 2020-2023  润新知