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,

 

嘮嘮嗑:

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

登錄頁:

 

 

控制台桌面:

 
管理員個人信息:
 

 

管理員修改密碼:

 

 

管理員列表:
 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM