thinkphp 模版布局

2021-08-01 15:56:00 字數 3234 閱讀 4398

thinkphp的模板引擎內建了布局模板功能支援,可以方便的實現模板布局以及布局巢狀功能

第一種方式:全域性配置方式

這種方式僅需在專案配置檔案中新增相關的布局模板配置,就可以簡單實現模板布局功能,比較適用於全站使用相同布局的情況,需要配置開啟layout_on 引數(預設不開啟),並且設定布局入口檔名layout_name(預設為layout)。

'layout_on'=>true,

'layout_name'=>'layout',

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

namespace

home\controller;

usethink\controller;

class

usercontroller

extends

controller

}file="public:header" />

file="public:footer" />

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

當然可以通過設定來改變這個特定的替換字串,例如:

『tmpl_layout_item』 => 『』

乙個布局模板同時只能有乙個特定替換字串。

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

如果需要指定其他位置的布局模板,可以使用:

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

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

第二種方式:模板標籤方式

這種布局模板不需要在配置檔案中設定任何引數,也不需要開啟layout_on,直接在模板檔案中指定布局模板即可,相關的布局模板調整也在模板中進行。

以前面的輸出模板為例,這種方式的入口還是在user/add.html 模板,但是我們可以修改下add模板檔案的內容,在頭部增加下面的布局標籤(記得首先關閉前面的layout_on設定,否則可能出現布局迴圈):

表示當前模板檔案需要使用layout.html 布局模板檔案,而布局模板檔案的寫法和上面第一種方式是一樣的。當渲染user/add.html 模板檔案的時候,如果讀取到layout標籤,則會把當前模板的解析內容替換到layout布局模板的 特定字串。

乙個模板檔案中只能使用乙個布局模板,如果模板檔案中沒有使用任何layout標籤則表示當前模板不使用任何布局。

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

name="newlayout" />

還可以在layout標籤裡面指定要替換的特定字串:

name="layout/newlayout"

replace="" />

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

file="public:header" />

div>

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

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

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

第三種方式:使用layout控制模板布局

使用內建的layout方法可以更靈活的在程式中控制模板輸出的布局功能,尤其適用於區域性需要布局或者關閉布局的情況,這種方式也不需要在配置檔案中開啟layout_on。例如:

namespace

home\controller;

usethink\controller;

class

usercontroller

extends

controller

}表示當前的模板輸出啟用了布局模板,並且採用預設的layout布局模板。

如果當前輸出需要使用不同的布局模板,可以動態的指定布局模板名稱,例如:

namespace

home\controller;

usethink\controller;

class

usercontroller

extends

controller

}

或者使用layout方法動態關閉當前模板的布局功能(這種用法可以配合第一種布局方式,例如全域性配置已經開啟了布局,可以在某個頁面單獨關閉):

namespace

home\controller;

usethink\controller;

class

usercontroller

extends

controller

}

以上都官方文件,看了好長時間都沒有看懂

接下來 ,重點來了

第二種 標籤布局

layout/layout.html頁面

file="public:header" />

file="public:left" />

file="public:footer" />

root/index.html頁面

lang="en">

charset="utf-8">

模版布局title>

head>

name="layout/layout" />

class="main"

id="main">

div>

body>

html>

ThinkPHP 模版布局方式

1 常用布局方法 2 模版檔案引入 包含檔案 可以使用include標籤來包含外部的模板檔案,使用方法如下 include標籤 包含外部模板檔案 閉合 閉合標籤 屬性 file 必須 要包含的模板檔案,支援變數 示例 1 使用完整檔名包含 格式 例如 這種情況下,模板檔名必須包含字尾。使用完整檔名包...

thinkphp模板布局

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

掌握Thinkphp3 2 0 模版基礎

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