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,
唠唠嗑:
第二天的工作到此结束了,只做了管理员的登录,退出,由于空余时间弄,没完成当天的任务。
实际上开发就是这样,看起来是只做了这两个内容,但是里面具体写的不少代码:
管理员登录页面
管理员登录操作
登录时记住密码
登录时的图形验证码
管理员登录验证--遇到问题了,废了不少时间
记录管理员登录日志
记录管理员操作日志
附录一些页面效果:
登录页:
控制台桌面:
管理员个人信息:
管理员修改密码:
管理员列表:
但行好事,莫问前程!
本文来自博客园,作者:yangphp,转载请注明原文链接:https://www.cnblogs.com/ypeih/p/15468605.html