一、建立合理的目錄結構
admin與home為后台和前台的控制器和模板文件夾
二、定義前后台視圖路徑常量
在constants.php中添加如下代碼:
//定義前台視圖路徑常量 define('HOME_VIEW_DIR', 'views/home/'); //定義后台視圖路徑常量 define('ADMIN_VIEW_DIR', 'views/admin/');
三、創建擴展加載器
在core文件夾中創建MY_Loader.php,代碼如下:
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2019/2/16 0016 * Time: 下午 1:31 */ defined('BASEPATH') OR exit('No direct script access allowed'); class MY_Loader extends CI_Loader { /** * @Description: 設置前台模板頁面路徑 * @Author: Yang */ public function set_home_view_dir() { $this->_ci_view_paths = array(APPPATH . HOME_VIEW_DIR => TRUE); } /** * @Description: 設置后台模板頁面路徑 * @Author: Yang */ public function set_admin_view_dir() { $this -> _ci_view_paths = array(APPPATH . ADMIN_VIEW_DIR => TRUE); } }
四、創建前台控制器
在home文件夾中添加index.php文件,代碼如下:
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2019/2/16 0016 * Time: 下午 1:25 */ defined('BASEPATH') OR exit('No direct script access allowed'); class Index extends CI_Controller { public function __construct() { parent::__construct(); $this->load->set_home_view_dir(); } public function index() { $this->load->view("home.html"); } }
訪問前台結果如下圖所示:
五、創建后台控制器
在admin文件夾中添加index.php,代碼如下:
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2019/2/16 0016 * Time: 下午 1:25 */ defined('BASEPATH') OR exit('No direct script access allowed'); class Index extends CI_Controller { public function __construct() { parent::__construct(); $this->load->set_admin_view_dir(); } public function index() { $this->load->view("admin.html"); } }
訪問后台結果如下圖所示:
六、解決默認控制器default_controller為目錄/Controller名
打開system\core目錄下的Router.php, 大概在298行
注釋下段代碼
// Is the method being specified? if (sscanf($this->default_controller, '%[^/]/%s', $class, $method) !== 2) { $method = 'index'; }
新增以下代碼
$index = strripos($this->default_controller, '/'); // 記錄 符號‘/’的下標 if($index == false){ $class = $this->default_controller; // 沒有‘/’ 的可以直接賦值 }else{ $this->directory = substr($this->default_controller, 0, $index + 1); //目錄的字符串 $class = substr($this->default_controller, $index + 1); //類的字符串 } $method = $this->method; //默認方法
如果是 '路徑/類名' ,以上的配置就夠了