1. 程式人生 > >THINKPHP5.1模板繼承

THINKPHP5.1模板繼承

模板繼承相對於模板佈局來說,是比較靈活的,可以應用於絕大部分網頁開發中

要使用模板繼承,我們需要有一個父模板,來被控制器方法名對應的html檔案所繼承

比如有一個controller/demo/demo8/test1方法,對應的view檢視為view/demo8/test1.html,

還有個用來被繼承的父模板view/public/base.html,

首部檔案view/public/header.html,頁尾檔案view/public/footer.html

{include}標籤用來引入檔案,檔名寫在file屬性中,不需要加檔案的字尾(.html)

{block}用來顯示一個區塊的內容,在父模板中用name屬性給{block}做唯一標識,在子模板中,需要使用在父模板中同name的{block}才能將內容正確的顯示在父模板中對應的{block}的位置

父模板view/public/base.html內容:

父模板只允許{include}和{block}兩個標籤

{include file='public/header1' /}
{block name='body'}
主體
{/block}
{block name='nav'}
導航
{/block}
{include file='public/footer1' /}

父模板頁面頭部view/public/header.html內容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h2 style="color: red;">我是模板繼承案例的頭部</h2>

父模板頁面尾部view/public/footer.html內容:

<h2 style="color: green;">我是模板繼承案例的尾部</h2>
</body>
</html>

子模板繼承:application\demo\view\demo8\test2.html

{extend} 表示繼承,用name屬性標識繼承的父模板檔案所在位置,無需寫檔案字尾(.html)

{block}用來替換父模板中同name屬性的{block}位置的內容

子模板只允許出現{extend}和{block}標籤

{__block__}表示直接使用父模板中的內容

寫在{block}{/block}外部的內容是不會被顯示的

{extend name="public/base" /}
{block name='body'}
{__block__}
<h2 style="color: blue;">我是模板繼承的案例的body</h2>
{/block}
{block name='nav'}
{/block}