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