abstract:第一種:全局配置模式適用于全站使用相同布局的情況,需要在config中配置開啟layout_on參數(shù),默認(rèn)是不開啟的,還有設(shè)置入口文件名,默認(rèn)是layout;<?phpreturn [ //調(diào)試模式 'APP_DEBUG' => true, //模板的布局 '
第一種:全局配置模式
適用于全站使用相同布局的情況,需要在config中配置開啟layout_on參數(shù),默認(rèn)是不開啟的,還有設(shè)置入口文件名,默認(rèn)是layout;
<?php
return [
//調(diào)試模式
'APP_DEBUG' => true,
//模板的布局
'template' => [
'layout_on' => true,
'layout_name' => 'layout'
]
];
layout_on開啟之后,從控制器fetch(‘index’)渲染后,本來不會直接渲染index.html文件,而是會到自定義的layout.html文件中去渲染,在其中會出現(xiàn)一個{_CONTENT_},這個就代表了要渲染的index模板文件,是將index的內(nèi)容替換了{(lán)_CONTENT_}內(nèi)容;
{include file='header' /}
{__CONTENT__}
{include file='footer' /}
這樣,我就可以實現(xiàn)頭尾分離,直接在index.html文件中寫內(nèi)容了;
如果某些頁面不需要使用布局模板功能,可以在模板文件開頭加上 {__NOLAYOUT__} 字符串;
第二種:模板標(biāo)簽方式
這種方式要關(guān)閉layout_on,負(fù)責(zé)會出現(xiàn)布局循環(huán);
直接添加
{layout name="layout" /}
一個模板文件中只能使用一個布局模板,如果模板文件中沒有使用任何layout標(biāo)簽則表示當(dāng)前模板不使用任何布局;
如果需要其他的布局模板,只要改變name值即可,也可以指定要替換的特定字符串:
{layout name="Layout/newlayout" replace="[__REPLACE__]" /}
第三種:使用內(nèi)置的layout方法控制模板布局
這種方式適用于局部需要布局或者關(guān)閉布局的情況,也不需要開啟layout_on方法;
public function index(){
$this->view->engine->layout(true);
return $this->fetch();
}
上面這種采用的是默認(rèn)的布局模板,也就是name名為layout的html,替換的字符也是磨人的{_CONTENT_};
如果要使用自定義的,只要在layout()函數(shù)中傳值即可;
$this->view->engine->layout('newLayout');
如果已經(jīng)開啟了全局,要關(guān)閉頁面的布局模板,也可以使用這個方法關(guān)閉它:
$this->view->engine->layout(false);
Correcting teacher:天蓬老師Correction time:2019-04-08 10:12:08
Teacher's summary:布局其實是在模板繼承的更加層級的抽象, 大多情況下, 模板繼承基本上已經(jīng)滿足要求了, 也更靈活