麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > ThinkPHP > 正文

ThinkPHP 學習筆記二 模版

2024-09-09 15:19:59
字體:
來源:轉載
供稿:網友

1.模版定義

默認的模板文件定義規則是:

模板目錄/模板主題/[分組名/]模塊名/操作名+模板后綴

模板目錄默認是項目下面的Tpl, 模板主題默認是default,模板主題功能是為了多模板切換而設計的,如果有多個模板主題的話,可以用TMPL_DEFAULT_THEME 參數設置默認的模板主題名。

在每個模板主題下面,是以項目的模塊名為目錄,然后是每個模塊的具體操作模板文件,例如:

User模塊的add操作 對應的模板文件就應該是:Tpl/default/User/add.html

模板文件的默認后綴的情況是.html,也可以通過TMPL_TEMPLATE_SUFFIX來配置成其他的。

如果項目啟用了模塊分組功能(假設User模塊屬于Home分組),那么默認對應的模板文件可能變成:Tpl/default/Home/User/add.html

2. 模版賦值

要在模板中輸出變量,必須在在Action類中把變量傳遞給模板,視圖類提供了 assign方法對模板變量賦值,無論何種變量類型都統一使用assign賦值。

$this->assign('name',$value);  

3.模版調用

模板變量賦值后就需要調用模板文件來輸出相關的變量,模板調用通過display方法來實現,我們在操作方法的最后使用:

$this->display();

根據前面的模板定義規則,因為系統會按照默認規則自動定位模板文件,所以通常display方法無需帶任何參數即可輸出對應的模板,這是模板輸出的最簡單的用法.

一、調用當前模塊的其他操作模板

格式:display('操作名')

例如,假設當前操作是User模塊下面的read操作,我們需要調用User模塊的edit操作模版,使用:

$this->display('edit');

不需要寫模板文件的路徑和后綴。

二、調用其他模塊的操作模板

格式:display('分組名:模塊名:操作名') 其中分組名是可選的

例如,當前是User模塊,我們需要調用Member模塊的read操作模版,使用:

$this->display('Member:read');

三、調用其他主題的操作模板

格式:display('主題名@模塊名:操作名')

例如我們需要 調用Xp主題的User模塊的edit操作模版,使用:

$this->display('Xp@User:edit');   

四、直接全路徑輸出模板

格式:display('模板文件名')

例如,我們直接輸出當前的Public目錄下面的menu.html模板文件,使用:

$this->display('./Public/menu.html');  

這種方式需要指定模板路徑和后綴,這里的Public目錄是位于當前項目入口文件位置下面,如果是其他的后綴文件,也支持直接輸出

4.模板替換

在進行模板輸出之前,系統還會對渲染的模板結果進行一些模板的特殊字符串替換操作,也就是實現了模板輸出的替換和過濾,這個機制可以使得模板文件的定義更加方便,默認的替換規則有:

./ Public: 會被替換成當前項目的公共模板目錄 通常是 /項目目錄/Tpl/default/Public/

__ PUBLIC __:會被替換成當前網站的公共目錄 通常是 /Public/

__ TMPL __: 會替換成項目的模板目錄 通常是 /項目目錄/Tpl/dfault/

__ ROOT __: 會替換成當前網站的地址(不含域名)

__ APP __: 會替換成當前項目的URL地址 (不含域名)

__ URL __: 會替換成當前模塊的URL地址(不含域名)

__ ACTION __:會替換成當前操作的URL地址 (不含域名)

__ SELF __: 會替換成當前的頁面URL

注意這些特殊的字符串是嚴格區別大小寫的,并且這些特殊字符串的替換規則是可以更改或者增加的,我們只需要在項目配置文件中配置TMPL_PARSE_STRING就可以完成,如果有相同的數組索引,就會更改系統的默認規則:

  1. TMPL_PARSE_STRING  => array(    
  2.       '__ PUBLIC __' => '/Common',  // 更改默認的__ PUBLIC __ 替換規則    
  3.      '__UPLOAD__' => '/Public/Uploads/',  // 增加新的上傳路徑替換規則    

5. 獲取內容

有些時候我們不想直接輸出模板內容,而是希望對內容再進行一些處理后輸出,就可以使用fetch方法來獲取解析后的模板內容,在Action類里面使用:

$content = $this->fetch();

fetch的參數用法和Display方法基本一致,

6. 靜態生成

ThinkPHP提供了靈活的靜態文件生成功能,可以在輸出模板的同時生成需要的靜態文件,以供調用.

在Action中使用buildHtml方法即可創建靜態文件,buildHtml方法的第一個參數就要生成的靜態文件名,后面的參數和display方法一致,內部其實是調用了前面提到的fetch方法獲取模板輸出然后創建靜態文件,用法如下:

$this->buildHtml('靜態文件', '靜態路徑','模板文件');  

靜態路徑如果留空的話 默認保存在HTML_PATH(默認的HTML_PATH路徑位于項目目錄下面的Html目錄,如果沒有的話手動創建)定義的路徑下面,靜態文件可以隨意設置,也可以包括路徑,如果不存在的路徑系統會自動創建

7. 模板引擎

系統支持原生的PHP模板,而且本身內置了一個基于XML的高效的編譯型模板引擎,無論在功能還是性能方面都優秀過Smarty,系統默認使用的模板引擎是內置模板引擎,關于這個模板引擎的標簽詳細使用可以參考模板指南部分。

內置的模板引擎也可以直接支持在模板文件中采用PHP原生代碼和模板標簽的混合使用,如果需要完全使用PHP本身作為模板引擎,可以配置:

'TMPL_ENGINE_TYPE' => 'PHP'

可以達到最佳的效率

8. 使用第三方模板引擎

系統支持模板引擎的擴展機制,并且官方提供了包括Smarty、EaseTemplate、TemplateLite和Smart在內的第三方模板引擎擴展。我們以Smarty模板引擎為例,來說明下如何使用第三方模板引擎。

首先,需要下載官方的模板引擎擴展,并放到系統目錄的LibThinkUtilTemplate目錄下面,然后,下載最新的Smarty模板引擎文件放到系統目錄的Vendor第三方類庫目錄。

剩下的,我們要做的只是簡單的配置下模板引擎名稱即可,例如在項目配置文件里面設置:'TMPL_ENGINE_TYPE' => 'Smarty'

區別就在于display方法直接輸出模板文件渲染后的內容,而fetch方法是返回模板文件渲染后的內容。如何對返回的結果content進行處理,完全由開發人員自行決定了。這是模板替換的另外一種高級方式,比較靈活,而且不需要通過配置的方式。

注意,fetch方法仍然會執行上面的模板替換操作。

9.布局模版

<!-- layout::模板文件規則::緩存時間(秒) -->

<!-- layout::Public:header::60 -->

10.系統模板

系統有一些內置的模板文件用于異常頁面和頁面Trace功能的輸出,你可以定制這些模板頁面,滿足自己的需要。默認的系統模板主要有:

頁面Trace模板:默認位于系統目錄的Tpl/PageTrace.tpl.php 是一個php文件,可更改TMPL_TRACE_FILE進行配置.

異常模板:默認位于系統目錄的Tpl/ThinkException.tpl.php,可以更改TMPL_EXCEPTION_FILE進行配置.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 粉嫩粉嫩一区二区三区在线播放 | 国产亚洲精品综合一区91555 | 精品久久久久久久久久久下田 | 欧美一级电影网站 | 特级黄aaaaaaaaa毛片 | 免费看毛片网站 | 爱草成年 | 国产成人精品无人区一区 | 免费在线观看亚洲 | 国产精品久久久久久久久久久久久久久久 | arabxxxxvideos| 91国内精品久久久久免费影院 | 91嫩草丨国产丨精品入口 | 午夜久久久精品一区二区三区 | 黄色片视频观看 | 色蜜桃av | 综合网天天射 | 精品国产91久久久久久久妲己 | 中文字幕在线观看91 | 久久久久久久久久久亚洲 | 久久免费观看一级毛片 | 国产成人自拍视频在线 | 中文字幕一区在线观看视频 | 成人在线a | 国产成人在线综合 | 亚洲乱操| 欧美一级色片 | 精品亚洲夜色av98在线观看 | 精品一区二区免费视频视频 | 黄色av免费网站 | 天天看天天摸天天操 | 黄色大片在线观看 | 免费毛片免费看 | 久久久久久亚洲综合影院红桃 | 日韩激情 | 欧美日韩在线播放 | sese在线视频 | 欧美性黄 | 成年人视频在线免费播放 | 成人福利在线免费观看 | 色毛片|