久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

thinkPHP3.0框架實(shí)現(xiàn)模板保存到數(shù)據(jù)庫的方法

這篇文章主要介紹了thinkPHP3.0框架實(shí)現(xiàn)模板保存到數(shù)據(jù)庫的方法,結(jié)合實(shí)例形式分析了使用thinkPHP3.0框架開發(fā)CMS系統(tǒng)過程中將模板保存到數(shù)據(jù)庫的具體實(shí)現(xiàn)步驟與相關(guān)操作技巧,需要的朋友

本文實(shí)例講述了thinkPHP3.0框架實(shí)現(xiàn)模板保存到數(shù)據(jù)庫的方法。分享給大家供大家參考,具體如下:

在開發(fā)cms的時候用到如果將模板文件存入到數(shù)據(jù)庫并顯示到頁面中

由于thinkphp3.0都是直接從模板文件中讀取再解析的那么對于模板存入數(shù)據(jù)庫中就只有自己開發(fā)了,還有thinkphp3.0中有mode的功能我們可以定義自己的mode這樣就可以達(dá)到目的了,那么如何來擴(kuò)展自己的mode呢?如下:

1.在你的入口文件中輸入

define('MODE_NAME','Ey');

其中"Ey"就是你自己擴(kuò)展的mode名稱了,請在你的thinkphp/Extend/Mode文件下面創(chuàng)建Ey文件夾

2.在Ey目錄中修改

添加tags.php文件內(nèi)容如下:

return array(
  'app_init'=>array(
  ),
  'app_begin'=>array(
    'ReadHtmlCache', // 讀取靜態(tài)緩存
  ),
  'route_check'=>array(
    'CheckRoute', // 路由檢測
  ),
  'app_end'=>array(),
  'path_info'=>array(),
  'action_begin'=>array(),
  'action_end'=>array(),
  'view_begin'=>array(),
  'view_template'=>array(
    'ExtensionTemplate', // 自動定位模板文件(手動添加)
  ),
  'view_content'=>array(
    'ParseContent'//(手動添加)
  ),
  'view_filter'=>array(
    'ContentReplace', // 模板輸出替換
    'TokenBuild',  // 表單令牌
    'WriteHtmlCache', // 寫入靜態(tài)緩存
    'ShowRuntime', // 運(yùn)行時間顯示
  ),
  'view_end'=>array(
    'ShowPageTrace', // 頁面Trace顯示
  ),
);

該文件中后面的注釋中添加手動添加了為我的修改,只是修改thinkphp中默認(rèn)的tags中查找模板和解析模板的行為

將系統(tǒng)默認(rèn)的action和view類復(fù)制到Ey的目錄中(由于解析內(nèi)容,所以要修改action和view類),修改action.class.php中的fetch方法:

protected function fetch($templateFile='',$templateContent='' ){
    return $this->view->fetch($templateFile,$templateContent);
}

view.class.php文件中的修改為:

public function fetch($templateFile='',$templateContent = NULL) {
    $params['templateFile'] = $templateFile;
    $params['cacheFlag'] = true;
    if(isset($templateContent)) {
      $params['templateContent'] = $templateContent;
    }
    tag('view_template',$params);
    // 頁面緩存
    ob_start();
    ob_implicit_flush(0);
    if('php' == strtolower(C('TMPL_ENGINE_TYPE'))) { // 使用PHP原生模板
      // 模板陣列變量分解成為獨(dú)立變量
      extract($this->tVar, EXTR_OVERWRITE);
      // 直接載入PHP模板
      include $templateFile;
    }else{
      // 視圖解析標(biāo)簽
      $params = array('var'=>$this->tVar,'content'=>$params['templateContent'],'file'=>$params['templateFile'],'cacheFlag'=>$params['cacheFlag']);
      tag('view_content',$params);
    }
    // 獲取并清空緩存
    $content = ob_get_clean();
    // 內(nèi)容過濾標(biāo)簽
    tag('view_filter',$content);
    // 輸出模板文件
    return $content;
}

3.擴(kuò)展自己的查找模板的類(自己擴(kuò)展的行為tp讓我們放在thinkphp\Extend\Behavior中)
在thinkphp\Extend\Behavior中添加ExtensionTemplateBehavior.class.php類,內(nèi)容如下:

class ExtensionTemplateBehavior extends Behavior {
  // 行為擴(kuò)展的執(zhí)行入口必須是run
  public function run(&$params){
    if( is_array($params) ){
      if( array_key_exists('templateFile', $params) ){
        $params  = $this->parseTemplateFile($params);
      }else{
        //異常
        throw_exception(L('_TEMPLATE_NOT_EXIST_AND_CONTENT_NULL_').'['.$params['templateFile'].']');
      }
    }else{
      // 自動定位模板文件
      if(!file_exists_case($params))
        $params  = $this->parseTemplateFile($params);
    }
  }
  private function parseTemplateFile($params) {
    if( is_array($params) ) {
      $templateFile = $params['templateFile'];
    }else{
      $templateFile = $params;
    }
    if(!isset($params['templateContent'])) { // 是否設(shè)置 templateContent 參數(shù)
      //自動獲取模板文件
      if('' == $templateFile){
        // 如果模板文件名為空 按照默認(rèn)規(guī)則定位
        $templateFile = C('TEMPLATE_NAME');
      } elseif(false === strpos($templateFile,C('TMPL_TEMPLATE_SUFFIX'))) {
        $path  = explode(':',$templateFile);
        //如果是插件
        if($path[0] == 'Ext') {
          $templateFile = str_replace(array('Ext:',$path[1] . ':',$path[2] . ':'),'',$templateFile);
          $templateFile = SITE_ROOT . '/Ext/extensions/' . strtolower($path[1]) . '/' . $path[2] . '/Tpl/' . $templateFile . C('TMPL_TEMPLATE_SUFFIX');
        } else {
          // 解析規(guī)則為 模板主題:模塊:操作 不支持 跨項(xiàng)目和跨分組調(diào)用
          $action = array_pop($path);
          $module = !empty($path)?array_pop($path):MODULE_NAME;
          if(!empty($path)) {// 設(shè)置模板主題
            $path = dirname(THEME_PATH).'/'.array_pop($path).'/';
          }else{
            $path = THEME_PATH;
          }
          $depr = defined('GROUP_NAME')?C('TMPL_FILE_DEPR'):'/';
          $templateFile = $path.$module.$depr.$action.C('TMPL_TEMPLATE_SUFFIX');
        }
      }
    } else {
      if('' == $templateFile){
        $depr = defined('GROUP_NAME')?C('TMPL_FILE_DEPR'):'/';
        $params['cacheFlag'] = false;
      } else {
        $path  = explode(':',$templateFile);
        //如果是插件
        if($path[0] == 'Ext') {
          $templateFile = str_replace(array('Ext:',$path[1] . ':',$path[2] . ':'),'',$templateFile);
          $templateFile = SITE_ROOT . '/Ext/extensions/' . strtolower($path[1]) . '/' . $path[2] . '/Tpl/' . $templateFile . C('TMPL_TEMPLATE_SUFFIX');
        } else {
          // 解析規(guī)則為 模板主題:模塊:操作 不支持 跨項(xiàng)目和跨分組調(diào)用
          $action = array_pop($path);
          $module = !empty($path)?array_pop($path):MODULE_NAME;
          if(!empty($path)) {// 設(shè)置模板主題
            $path = dirname(THEME_PATH).'/'.array_pop($path).'/';
          }else{
            $path = THEME_PATH;
          }
          $depr = defined('GROUP_NAME')?C('TMPL_FILE_DEPR'):'/';
          $templateFile = $path.$module.$depr.$action.C('TMPL_TEMPLATE_SUFFIX');
        }
      }
    }
    if( is_array($params) ){
      $params['templateFile'] = $templateFile;
      return $params;
    }else{
      if(!file_exists_case($templateFile))
        throw_exception(L('_TEMPLATE_NOT_EXIST_').'['.$templateFile.']');
      return $templateFile;
    }
  }
}

【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過測試外,其他素材未做測試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請勿用于商業(yè)用途。如損害你的權(quán)益請聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

二維碼生成標(biāo)簽 {pboot:qrcode string=***} 使用說明: 用于生成對應(yīng)文本的二維碼圖片,可用于產(chǎn)品列表頁或詳情頁為每個產(chǎn)品生成二維碼 : {pboot:qrcode string={pboot:httpurl}{content:link}}或{pboot
1、當(dāng)前站點(diǎn)網(wǎng)址: {pboot:httpurl} 使用說明: 自適應(yīng)獲取當(dāng)前訪問網(wǎng)址,主要用于需要使用網(wǎng)站路徑前綴的情況,如輸出:https://www.xxx.cn/ 2、當(dāng)前頁面 {pboot:pageurl} 使用說明: 獲取當(dāng)前訪
后臺操作更換模板路徑: 【基礎(chǔ)內(nèi)容】-【站點(diǎn)信息】-【站點(diǎn)模板】 配置后臺模板子目錄 【全局配置】-【配置參數(shù)】-【安全配置】-【模板子目錄】 配置后臺黑名單和白名單 【全局配
1、模板文件嵌套引用 {include file=***.html} 使用說明: 文章來源:html5模板網(wǎng) html5code.net 來源:html5模板網(wǎng) html5code.net 可以嵌套使用,如:index.html 嵌套一個head.html,同時head.html中嵌套com
下面小編就為大家分享一篇PHP 使用二進(jìn)制保存用戶狀態(tài)的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
Blade 是 laravel 提供的一個簡單強(qiáng)大的模板引擎。下面這篇文章主要給大家介紹了關(guān)于Laravel框架之blade模板新手的入門教程以及一些使用的小技巧,文中通過示例代碼介紹的非常詳細(xì),需
主站蜘蛛池模板: 日韩精品视频中文字幕 | 日本a视频 | 国产成人自拍一区 | 91视频a | 国产精品一区在线观看你懂的 | 成人字幕网zmw | 九九色综合 | 日韩视频―中文字幕 | 久久久久久亚洲精品 | 国产精品久久久久久亚洲调教 | 日韩在线视频一区 | 美女高潮网站 | 欧美日韩在线一区二区 | 日韩精品成人av | 国产欧美日韩在线观看 | 成人免费观看男女羞羞视频 | 国产精品视频97 | 亚洲视频一 | 四虎成人av | 欧美日韩1区2区 | 精品视频 免费 | 国产丝袜av | 久久99精品久久久久久 | 亚洲草草视频 | 欧美精产国品一二三区 | 麻豆国产一区二区三区四区 | 久久国产精品久久久久久 | 精品久久久久久亚洲精品 | 亚洲一区二区三区在线 | 欧美在线一区二区三区 | 日韩影院在线 | 欧美日韩在线一区二区 | 中文字幕在线观看视频一区 | 色综合一区二区 | 国产高清精品一区二区三区 | 精品国产不卡一区二区三区 | 精品视频在线免费观看 | 久久99久久98精品免观看软件 | 夜夜爽99久久国产综合精品女不卡 | 9191在线观看| 国产精品毛片久久久久久 |