国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 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進行配置.

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

圖片精選

主站蜘蛛池模板: 集贤县| 古交市| 凉城县| 襄垣县| 酒泉市| 伊宁县| 平远县| 天气| 鄢陵县| 静乐县| 潮安县| 潼关县| 星座| 石台县| 秭归县| 自贡市| 巴林左旗| 都安| 山东| 南城县| 北票市| 哈巴河县| 平山县| 新宁县| 财经| 项城市| 南汇区| 正安县| 弥渡县| 会宁县| 汨罗市| 九龙城区| 恩施市| 什邡市| 武川县| 大厂| 德安县| 德江县| 民乐县| 长治市| 长泰县|