模板渲染

模板渲染

版本 新增功能
5.0.4 支持渲染視圖根目錄的模板文件

渲染模板最常用的是繼承系統(tǒng)的控制器基類后調(diào)用fetch方法,調(diào)用格式:

fetch('[模板文件]'[,'模板變量(數(shù)組)'])

模板文件的寫法支持下面幾種:

用法 描述
不帶任何參數(shù) 自動定位當(dāng)前操作的模板文件
[模塊@][控制器/][操作] 常用寫法,支持跨模塊
完整的模板文件名 直接使用完整的模板文件名(包括模板后綴)

下面是一個最典型的用法,不帶任何參數(shù):

// 不帶任何參數(shù) 自動定位當(dāng)前操作的模板文件
return $this->fetch();

表示系統(tǒng)會按照默認(rèn)規(guī)則自動定位模板文件,其規(guī)則是:

當(dāng)前模塊/默認(rèn)視圖目錄/當(dāng)前控制器(小寫)/當(dāng)前操作(小寫).html

V5.0.16+版本開始,默認(rèn)的模板文件名規(guī)則改為實際操作方法名的小寫+下劃線寫法。但可以配置template.auto_rule的值為2 恢復(fù)之前的全小寫規(guī)則。

如果有更改模板引擎的view_depr設(shè)置(假設(shè) 'view_depr'=>'_')的話,則上面的自動定位規(guī)則變成:

當(dāng)前模塊/默認(rèn)視圖目錄/當(dāng)前控制器(小寫)_當(dāng)前操作(小寫).html

如果沒有按照模板定義規(guī)則來定義模板文件(或者需要調(diào)用其他控制器下面的某個模板),可以使用:

// 指定模板輸出
return $this->fetch('edit'); 

表示調(diào)用當(dāng)前控制器下面的edit模板

return $this->fetch('member/read');

表示調(diào)用Member控制器下面的read模板。

跨模塊渲染模板

return $this->fetch('admin@member/edit');

渲染輸出不需要寫模板文件的路徑和后綴。這里面的控制器和操作并不一定需要有實際對應(yīng)的控制器和操作,只是一個目錄名稱和文件名稱而已,例如,你的項目里面可能根本沒有Public控制器,更沒有Public控制器的menu操作,但是一樣可以使用

return $this->fetch('public/menu');

輸出這個模板文件。理解了這個,模板輸出就清晰了。

fetch方法支持在渲染輸出的時候傳入模板變量,例如:

return $this->fetch('read', ['a'=>'a','b'=>'b']);

V5.0.4+版本開始,支持從視圖根目錄開始讀取模板,例如:

$this->fetch('/menu');

表示讀取的模板是

當(dāng)前模塊/默認(rèn)視圖目錄/menu.html

如果你的控制器類沒有繼承系統(tǒng)的控制器基類,請使用系統(tǒng)提供的助手函數(shù)view進(jìn)行渲染輸出。

自定義模板路徑

如果你的模板文件位置比較特殊或者需要自定義模板文件的位置,可以采用下面的幾種方式處理。

渲染完整模板

return $this->fetch('./template/public/menu.html');

這種方式需要帶模板路徑和后綴指定一個完整的模板文件位置,這里的template/public目錄是位于當(dāng)前項目入口文件位置下面。如果是其他的后綴文件,也支持直接輸出,例如:

return $this->fetch('./template/public/menu.tpl');

只要./template/public/menu.tpl是一個實際存在的模板文件。

要注意模板文件位置是相對于應(yīng)用的入口文件,而不是模板目錄。

渲染內(nèi)容

如果希望直接解析內(nèi)容而不通過模板文件的話,可以使用display方法:

return $this->display($content,$vars);

渲染的內(nèi)容中一樣可以使用模板引擎的相關(guān)標(biāo)簽。

文檔最后更新時間:2018-04-26 10:29:06

文檔
目錄

深色
模式

切換
寬度