ThinkPHP 模版布局方式

2022-05-25 10:30:13 字數 2332 閱讀 1534

1  常用布局方法

2  模版檔案引入(包含檔案)

可以使用include標籤來包含外部的模板檔案,使用方法如下: include標籤(包含外部模板檔案)

閉合   閉合標籤

屬性   file(必須):要包含的模板檔案,支援變數

示例:1、 使用完整檔名包含

格式:例如:

這種情況下,模板檔名必須包含字尾。使用完整檔名包含的時候,特別要注意檔案包含指的是伺服器端包含,而不是包含乙個url位址,也就是說file引數的寫法是伺服器端的路徑,如果使用相對路徑的話,是基於專案的入口檔案位置。

2、包含當前模組的其他操作模板檔案

格式:例如 匯入當前模組下面的read操作模版:

操作模板無需帶字尾。

3、 包含其他模組的操作模板

格式:例如,包含public模組的header操作模版:

4、包含其他模板主題的模組操作模板

格式:例如,包含blue主題的user模組的read操作模版:

5、 用變數控制要匯入的模版

格式:例如

給$tplname賦不同的值就可以包含不同的模板檔案,變數的值的用法和上面的用法相同。無論你使用什麼方式包含外部模板,include標籤支援在包含檔案的同時傳入引數,例如,下面的例子我們在包含header模板的時候傳入了title和keywords變數:

就可以在包含的header.html檔案裡面使用var1和var2變數,方法

注意:由於模板解析的特點,從入口模板開始解析,如果外部模板有所更改,模板引擎並不會重新編譯模板,除非在除錯模式下或者快取已經過期。如果部署模式下修改了包含的外部模板檔案後,需要把模組的快取目錄清空,否則無法生效。3.1版本開始,include標籤支援匯入多個模板,用逗號分割即可,例如:

3.1  模版布局

新版模板引擎內建了布局模板功能支援,可以方便的實現模板布局以及布局巢狀功能。有兩種布局模板的支援方式:

第一種方式是 以布局模板為入口的方式

該方式需要配置開啟layout_on 引數(預設不開啟),並且設定布局入口檔名layout_name(預設為layout)。

開啟layout_on後,我們的模板渲染流程就有所變化,例如:

class useraction extends action 

}

在不開啟layout_on布局模板之前,會直接渲染tpl/user/add.html 模板檔案,開啟之後,首先會渲染tpl/layout.html 模板,布局模板的寫法和其他模板的寫法類似,本身也可以支援所有的模板標籤以及包含檔案,區別在於有乙個特定的輸出替換變數,例如,下面是乙個典型的layout.html模板的寫法:

讀取layout模板之後,會再解析user/add.html 模板檔案,並把解析後的內容替換到layout布局模板檔案的 特定字串。

採用這種布局方式的情況下,一旦user/add.html 模板檔案或者layout.html布局模板檔案發生修改,都會導致模板重新編譯。

如果專案需要使用不同的布局模板,可以動態的配置layout_name引數實現。

如果某些頁面不需要使用布局模板功能,可以在模板檔案開頭加上 字串。

如果上面的user/add.html 模板檔案裡面包含有,則即使當前開啟布局模板,也不會進行布局模板解析。

第二種方式是以當前輸出模板為入口的方式

以前面的輸出模板為例,這種方式的入口還是在user/add.html 模板,但是我們可以修改下add模板檔案的內容,在頭部增加下面的布局標籤:

如果讀取到layout標籤,則會把當前模板的解析內容替換到layout布局模板的 特定字串。

如果需要使用其他的布局模板,可以改變layout的name屬性,例如:

由於所有include標籤引入的檔案都支援layout標籤,所以,我們可以借助layout標籤和include標籤相結合的方式實現布局模板的巢狀。例如,上面的例子

在引入的header和footer模板檔案中也可以新增layout標籤,例如header模板檔案的開頭新增如下標籤:

這樣就實現了在頭部模板中引用了menu布局模板。

也可以採用兩種布局方式的結合,可以實現更加複雜的模板布局以及巢狀功能。

thinkphp 模版布局

thinkphp的模板引擎內建了布局模板功能支援,可以方便的實現模板布局以及布局巢狀功能 第一種方式 全域性配置方式 這種方式僅需在專案配置檔案中新增相關的布局模板配置,就可以簡單實現模板布局功能,比較適用於全站使用相同布局的情況,需要配置開啟layout on 引數 預設不開啟 並且設定布局入口檔...

thinkphp模板布局

1 layout裡面是所有公共部分,非公共部分直接用代替 頁面中的內容就是不同的內容來代替這個 2 感覺和包含檔案實現的功能很相似 1 在檢視目錄下新建檔案 layout.html 2 在layout.html頁面中 將所有的公共頁面保留,非公共頁面使用替代 只能存在乙個 3 頁面中如何書寫 引入模...

掌握Thinkphp3 2 0 模版基礎

我們將要學習一下 thinkphp 模版,thinkphp 內建了乙個基於 xml 的效能 卓越的模版引擎 thinktemplate,使用了動態編譯和快取技術,支援自定義標籤庫,其實我還體會不到其中的強大,慢慢體會吧 一 變數輸出 1.普通變數 控制器提供資料 1 給模版傳遞乙個變數 2 user...