一.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;

案例如下:
有一個網(wǎng)站咙俩,分前后臺耿戚,前臺的目錄使用自定義的目錄,后臺使用默認的application/views/下的文件阿趁。
首先在/application/core/下定義一個MY_Loader.php文件:

class MY_Loader extends CI_Loader
{
    protected $_theme = 'default/';

    #開啟新的視圖目錄膜蛔,調(diào)用$this->load->view()時,則調(diào)用themes/default/下的view文件
    public function switch_themes_on()
    {
        $this->_ci_view_paths = array(FCPATH . THEMES_DIR . $this->_theme => true);
    }

    #關(guān)閉新的試圖目錄脖阵,調(diào)用$this->load->view()時皂股,則調(diào)用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();
        #關(guān)閉新視圖文件
        $this->load->switch_themes_off();
    }
}

最后呜呐,當你編寫前臺代碼時,控制器繼承Home_Controller悍募,則加載視圖時會自動加載application/themes/default中的view文件蘑辑。 后臺控制器則繼承Admin_Controller,當你使用$this->load->view()方法的時候搜立,CI就會加載默認的view目錄下的視圖文件以躯。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市啄踊,隨后出現(xiàn)的幾起案子忧设,更是在濱河造成了極大的恐慌,老刑警劉巖颠通,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件址晕,死亡現(xiàn)場離奇詭異,居然都是意外死亡顿锰,警方通過查閱死者的電腦和手機谨垃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來硼控,“玉大人刘陶,你說我怎么就攤上這事±魏常” “怎么了匙隔?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長熏版。 經(jīng)常有香客問我纷责,道長捍掺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任再膳,我火速辦了婚禮挺勿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘喂柒。我一直安慰自己不瓶,他們只是感情好,可當我...
    茶點故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布胳喷。 她就那樣靜靜地躺著湃番,像睡著了一般夭织。 火紅的嫁衣襯著肌膚如雪吭露。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天尊惰,我揣著相機與錄音讲竿,去河邊找鬼。 笑死弄屡,一個胖子當著我的面吹牛题禀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播膀捷,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼迈嘹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了全庸?” 一聲冷哼從身側(cè)響起秀仲,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎壶笼,沒想到半個月后神僵,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡覆劈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年保礼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片责语。...
    茶點故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡炮障,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出坤候,到底是詐尸還是另有隱情胁赢,我是刑警寧澤,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布铐拐,位于F島的核電站徘键,受9級特大地震影響练对,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吹害,卻給世界環(huán)境...
    茶點故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一螟凭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧它呀,春花似錦螺男、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至谓媒,卻和暖如春淆院,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背句惯。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工土辩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人抢野。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓拷淘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親指孤。 傳聞我的和親對象是個殘疾皇子启涯,可洞房花燭夜當晚...
    茶點故事閱讀 45,876評論 2 361

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,332評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)恃轩,斷路器结洼,智...
    卡卡羅2017閱讀 134,716評論 18 139
  • application:具體項目開發(fā)目錄; system:CI框架代碼详恼; user_guide:用戶手冊补君,和實現(xiàn)無...
    依點矯情閱讀 1,540評論 0 5
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件昧互、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,124評論 4 61
  • 人生的道路遠大而無盡頭挽铁,但是每一個人總是越走越遠,人生就像一只飛翔的鳥兒敞掘,總愛往上飛叽掘,而不是往下掉。而人生的道路更...
    解曉萍閱讀 255評論 0 1