一.CI(Codeigniter)框架自定義檢視檔案位置
你想自定義view的檔案位置,則需要了解CI框架如何載入view檢視檔案的。
$this->load->view(); 這行程式碼的原理是什麼?
我們開啟application/core/Loader.php,裡面有一個這樣的方法:
public function add_package_path($path, $view_cascade = TRUE)
{
$path = rtrim($path, '/').'/';
array_unshift($this->_ci_library_paths, $path);
array_unshift($this->_ci_model_paths, $path);
array_unshift($this->_ci_helper_paths, $path);
//這一行程式碼就是載入view的操作,你想自定義則修改即可。
$this->_ci_view_paths = array($path.'views/' => $view_cascade) + $this->_ci_view_paths;
// Add config file path
$config =& $this->_ci_get_component('config');
$config->_config_paths[] = $path;
return $this;
}
但本著可擴充套件性的原則,我們不去修改原始碼,而是使用繼承的原則來解決這個問題:
方法:自定義一個MY_Loader.php類繼承自Loader,然後在方法中修改$this->_ci_view_paths;
案例如下:
有一個網站,分前後臺,前臺的目錄使用自定義的目錄,後臺使用預設的application/views/下的檔案。
首先在/application/core/下定義一個MY_Loader.php檔案:
class MY_Loader extends CI_Loader
{
protected $_theme = 'default/';
#開啟新的檢視目錄,呼叫$this->load->view()時,則呼叫themes/default/下的view檔案
public function switch_themes_on()
{
$this->_ci_view_paths = array(FCPATH . THEMES_DIR . $this->_theme => true);
}
#關閉新的試圖目錄,呼叫$this->load->view()時,則呼叫application/views/下的view檔案
public function switch_themes_off()
{
//just do nothing
}
}
其次,在/application/core/中自定義一個控制類MY_Controller.php繼承自CI_Controller類,
//前臺控制器
class Home_Controller extends CI_Controller{
public function __construct()
{
parent::__construct();
#開啟新檢視檔案
$this->load->switch_themes_on();
}
}
//後臺控制器
class Admin_Controller extends CI_Controller{
public function __construct()
{
parent::__construct();
#關閉新檢視檔案
$this->load->switch_themes_off();
}
}
最後,當你編寫前臺程式碼時,控制器繼承Home_Controller,則載入檢視時會自動載入application/themes/default中的view檔案。 後臺控制器則繼承Admin_Controller,當你使用$this->load->view()方法的時候,CI就會載入預設的view目錄下的檢視檔案。
相關文章
- CodeIgniter框架之檢視框架
- JXPopupView:一個輕量級的自定義檢視彈出框架View框架
- 自定義檢視指令
- 自定義檢視---圓角柱狀圖(一)
- Laravel 自定義檢視元件Laravel元件
- 自定義例外 + 建立檢視
- MVC自定義檢視規則MVC
- CI框架獲取post和get引數_CodeIgniter心得框架
- Hadoop中檢視一個檔案位置資訊Hadoop
- # 自定義view————流程位置View
- Xamarin iOS教程之自定義檢視iOS
- win10搜尋檔案在哪裡 檢視搜尋檔案位置的方法Win10
- php 自定義配置檔案PHP
- 控制元件自定義位置控制元件
- 谷歌工具檢視CSS程式碼定義的位置谷歌CSS
- 自定義MVC檢視引擎ViewEngine 建立Model的專屬檢視MVCView
- 自定義 Command 檢視 Laravel 日誌Laravel
- Android 最簡單的自定義檢視管理之一Android
- DesignBuilder自定義材料檔案UI
- Centos6環境下CI(CodeIgniter)框架建立定時任務CentOS框架
- swap檔案檢視
- 檢視大檔案
- Laravel 自定義函式存放位置Laravel函式
- AlertDialog 自定義對話方塊檢視
- 如何使用Android自定義複合檢視Android
- 前臺使用者自定義效能檢視
- 自定義ORM框架ORM框架
- CI-CodeIgniter中“超級物件”:$CI =& get_instance()物件
- 使用stub快速生成自定義檔案
- XCode 建立自定義檔案模版XCode
- Yii自定義配置檔案存放方法
- iOS實現自定義的彈出檢視(popView)iOSView
- Flutter - Drawer 抽屜檢視與自定義headerFlutterHeader
- 自定義提醒檢視Alert-動態繪製
- 檢視Oracle表中的指定記錄在資料檔案中的位置Oracle
- 【11g】v$diag_info檢視獲得控制檔案轉儲檔名及位置
- CI(CodeIgniter)框架下使用非自帶類庫實現郵件傳送框架
- 【PHP】CI框架原始碼分析核心檔案之Input.phpPHP框架原始碼