第二天目標:
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,
嘮嘮嗑:
第二天的工作到此結束了,只做了管理員的登錄,退出,由於空余時間弄,沒完成當天的任務。
實際上開發就是這樣,看起來是只做了這兩個內容,但是里面具體寫的不少代碼:
管理員登錄頁面
管理員登錄操作
登錄時記住密碼
登錄時的圖形驗證碼
管理員登錄驗證--遇到問題了,廢了不少時間
記錄管理員登錄日志
記錄管理員操作日志
附錄一些頁面效果:
登錄頁:



控制台桌面:


管理員個人信息:


管理員修改密碼:


管理員列表:

