首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

CodeIgniter 視圖加載擴展:自定義模板後綴與輸出控制

     編輯:PHP 相關知識

CodeIgniter 預設視圖文件後綴為 .php,若團隊約定使用 .tpl、.html 或需統一輸出控制(如壓縮、佈局注入),可通過繼承 CI_Controller 重寫 view() 方法實現。

核心實現代碼

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class MY_Controller extends CI_Controller {

    public function __construct() {
        parent::__construct();
    }

    /**
     * 重寫視圖加載
     * @param string $file    視圖文件名(不含後綴)
     * @param array  $data    視圖數據
     * @param bool   $return  true=返回字符串,false=直接輸出
     * @return string|void
     */
    public function view($file, $data = [], $return = false) {
        // 統一追加 .tpl 後綴,避免控制器重複寫後綴
        $viewFile = $file . '.tpl';

        // 兼容 CI 3/4 寫法:$this->load->view() 返回字符串需第三參數為 true
        $output = $this->load->view($viewFile, $data, true);

        if ($return) {
            return $output;
        }

        echo $output;
    }
}

使用方式

class Welcome extends MY_Controller {
    public function index() {
        $this->view('welcome_message', ['title' => 'Hello CI']); // 自動查找 welcome_message.tpl
    }
}

進階擴展建議

  • 多主題支持:根據配置動態決定後綴或目錄 $this->config->item('theme') . '/' . $file . '.tpl'。
  • 佈局/區塊注入:在輸出前注入公共 head/footer,或整合 Template Parser 庫實現 {header} 佔位符替換。
  • 輸出壓縮:echo $this->minifyHtml($output); 移除多餘空白字符。
  • 緩存整合:結合 $this->cache->save() 實現視圖片段緩存。

將視圖加載邏輯集中在基類控制器,不僅統一了團隊規範,更為後續功能擴展預留了擴展點,是 CodeIgniter 專案架構演進的關鍵一步。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved