這篇文章主要介紹了CI架構實現架構前後端分離的方法,結合執行個體形式較為詳細的分析了CI架構前後端分離的相關視圖、控制器設定與擴充等操作技巧,需要的朋友可以參考下
本文執行個體分析了CI架構實現架構前後端分離的方法。分享給大家供大家參考,具體如下:
我們在使用CI架構開發中(或者使用所有的其他架構開發中),總是習慣於將所開發項目的前端和後台分離開來,將各自的控制器、模型或視圖放到不同的檔案夾中。在這一點上ThinkPHP架構要比CI架構更要方便一些。這篇博文我們就講述如何?根據CI架構開發將前後端實現分離。(本文以本人開發的Pkadmin後台管理系統為例,Pkadmin後台管理系統是基於Codeigniter_v3.1.0架構和Olive Admin後台模版進行開發的,在這裡就不過多的介紹,感情趣的朋友可以到Github進行查看歡迎大家指正相互學習。
1、建立合理的目錄結構
CI架構的目錄結構以及各目錄的功能相信大家都已經很瞭解了,在這裡就不在重複的進行介紹了(如果還有不是很明白的可以去看博主的部落格專欄)。我們要實現前後端架構功能分離,首先就要建立合理的目錄結構,也就是你想將你的前端控制器放在何處、後台控制器放在何處、前端視圖放在那個檔案夾、後台管理檢視放在那個檔案夾。
如是Pkadmin後台管理系統的目錄結構,我將控制器全部放在架構本身的controllers檔案夾中,只添加了不同的前端後台檔案夾存放各自的控制器檔案,視圖也是同樣。不做贅述。
2、擴充載入器設定視圖路徑
① 為了項目有更好的維護性,我把視圖路徑設定為常量,在App/config/constants.php中進行定義常量:
//定義前台視圖路徑常量define('HOME_VIEW_DIR', 'views/Home/');//定義後台視圖路徑常量define('ADMIN_VIEW_DIR', 'views/Pkadmin/');//版本define('PKADMIN_VERSION', '1.0.0');
② 擴充載入器
載入器如何擴充如果有博友不會的可以去查看CI架構手冊,上面講的非常清楚。(多說一句:在APP/core檔案夾下建立PK_Loader.php檔案)
<?php/** * ========================================== * Created by Pocket Knife Technology. * Author: ZhiHua_W <zhihua_wei@foxmail.com> * Date: 2016/11/02 0031 * Time: 上午 9:19 * Project: Pkadmin後台管理系統 * Version: 1.0.0 * Power: 載入器擴充 * ========================================== */defined('BASEPATH') OR exit('No direct script access allowed');class PK_Loader extends CI_Loader { /** * 設定前台視圖路徑 */ public function set_home_view_dir() { $this -> _ci_view_paths = array(APPPATH . HOME_VIEW_DIR => TRUE); } /** * 設定後台視圖路徑 */ public function set_admin_view_dir() { $this -> _ci_view_paths = array(APPPATH . ADMIN_VIEW_DIR => TRUE); }}
3、擴充控制器
擴充控制器主要是為了產生前台背景父控制器方便與進行操作繼承(為了方便可以很快明白其原理,代碼有所精簡)。
<?php/** * ========================================== * Created by Pocket Knife Technology. * Author: ZhiHua_W <zhihua_wei@foxmail.com> * Date: 2016/11/02 0031 * Time: 上午 9:23 * Project: Pkadmin後台管理系統 * Version: 1.0.0 * Power: 控制器擴充 * ========================================== */defined('BASEPATH') OR exit('No direct script access allowed');/** * 前台父控制器 */class Home_Controller extends CI_Controller { public function __construct() { parent::__construct(); $this -> load -> set_home_view_dir(); }}/** * 後台父類控制器 */class Pkadmin_Controller extends CI_Controller { public $data; public function __construct() { parent::__construct(); $this -> load -> set_admin_view_dir(); }}
4、測試
在Pkadmin控制器檔案夾中建立Admin.php(後台首頁)控制器檔案進行輸出測試(代碼有所刪除精簡)。
<?php/** * ========================================== * Created by Pocket Knife Technology. * Author: ZhiHua_W <zhihua_wei@foxmail.com> * Date: 2016/11/05 0015 * Time: 上午 10:23 * Project: Pkadmin後台管理系統 * Version: 1.0.0 * Power: 後台首頁控制器 * ========================================== */defined('BASEPATH') OR exit('No direct script access allowed');class Admin extends Pkadmin_Controller { public function __construct() { parent::__construct(); $this -> load -> model('login_model', 'admin'); $this -> load -> library('pagination'); } /** * Pkadmin 後台首頁action */ public function index() { $this -> load -> view('admin.html', $data); }}
後台控制器繼承後台父類控制器,前台控制器整合前台父類控制器,同樣的在各自視圖檔案夾中建立相應的視圖檔案即可是想前後端的完美分離。
以上就是本文的全部內容,希望對大家的學習有所協助,更多相關內容請關注topic.alibabacloud.com!