CodeIgniter3.0開發手冊里有介紹關于管理多應用的方法,具體在:ci常規主題 ?管理你的應用程式,這一章節, 它官方給出的方案如下:
在一個 CodeIgniter 下運行多個應用程式
如果你希望在一個 CodeIgniter 下管理多個不同的應用程式,只需簡單的 將 application 目錄下的所有檔案放置到每個應用程式獨立的子目錄下即可,
例如,你要創建兩個應用程式:"foo" 和 "bar",你可以像下面這樣組織你的目錄結構:
applications/foo/ applications/foo/config/ applications/foo/controllers/ applications/foo/libraries/ applications/foo/models/ applications/foo/views/ applications/bar/ applications/bar/config/ applications/bar/controllers/ applications/bar/libraries/ applications/bar/models/ applications/bar/views/要選擇使用某個應用程式時,你需要打開 index.php 檔案然后設定 $application_folder 變數,例如,選擇使用 "foo" 這個應用,你可以這樣:
$application_folder = 'applications/foo';
個人也是非常喜歡官方這種結構部署,可是,習慣thinkphp的小伙伴,總喜歡把前后端的視圖view放在一起,,結構如下:

上圖是admin后臺管理系統的目錄結構,我將控制器全部放在框架本身的controllers檔案夾中,只添加了不同的前端后臺檔案夾存放各自的控制器檔案,視圖也是同樣,
下面參考pkadmin作者的一段解決方案:
擴展加載器設定視圖路徑
① 為了專案有更好的維護性,我把視圖路徑設定為常量,在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檔案)
/**
* 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、擴展控制器
擴展控制器主要是為了生成前臺后臺的父控制器方便與進行操作繼承(為了方便可以很快明白其原理,代碼有所精簡),
/**
* Project: Pkadmin后臺管理系統
* 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(后臺首頁)控制器檔案進行輸出測驗(代碼有所洗掉精簡),
/**
* 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);
}
}
后臺控制器繼承后臺父類控制器,前臺控制器集成前臺父類控制器,同樣的在各自視圖檔案夾中建立相應的視圖檔案即可是想前后端的完美分離,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/287589.html
標籤:其他
上一篇:設計的7大原則
