thinkphp5模板佈局

第一種方式:全局配置方式

需要配置開啓layout_on 參數(默認不開啓),並且設置佈局入口文件名layout_name(默認爲layout)
這個是在application/config.php文件裏

'template'  =>  [
        //開啓layout_on
        'layout_on'     =>  true,
        //目錄位置
        'layout_name'   =>  'layout/layoutname',
        //佈局替換變量
        'layout_item'   =>  '{__CONTENT__}'
]

注意:
在配置文件中 ‘url_html_suffix’ => ‘html’, 這想必須是html,不然模板輸出的時候會格式不正確。我因爲這個不小心配置成了json格式的結果模板輸出全是json格式,就連html標籤都輸出了。
然後是控制器,其實控制器不需要有什麼配置。如果沒人任何需要輸出的內容就算是空的控制器也是可以的。

<?php
namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
    /**
     * @param string $name
     */
    public function index()
    {
        return $this->fetch();
    }
}
?>

佈局模板,這個意思很明啦。就是吧分開了的頭部尾部中間部分按這個模板的規則統一導入進來。

{include file="layout/header" /}
{__CONTENT__}
{include  file="layout/footer" /}

上面這個是在layoutname.html文件上的代碼,因爲我在配置文件中配置的是 'layout_name' => 'layout/layoutname' 所以他的佈局模板文件位置就是 application/index/view/layout/layoutname.html 還有header和footer兩個文件都在這個文件夾下。

下面這個是header頭部文件的內容

<!doctype html>
<html>
<head>
<title>頭部信息</title>
</head>
<body>
這個是頭部信息

這個是footer尾部內容

這個是底部信息
</body>
</html>

中間部分就是控制器的操作模板,也就是當前控制器的index操作 application/index/view/Index/index.html

{//__NOLAYOUT__}
<div>
這是 layout 模板佈局
中間內容
</div>

{//__NOLAYOUT__} 這個是如果在這個模板裏不想使用佈局模板的話用{__NOLAYOUT__} 可以屏蔽掉佈局模板的頭部和尾部。雙斜槓”//”是我註釋掉了這個變量,用的時候你需要把“//”去掉哦。

接下來我們看看輸出結果:

這裏寫圖片描述

現在開啓 {__NOLAYOUT__} 這個變量看看結果是怎樣的!
在這裏我需要提醒一下在開啓 {__NOLAYOUT__} 之後刷新瀏覽器之前先清空一下runtime\temp 這個目錄的緩存文件。

這裏寫圖片描述
要不然刷新是沒有效果的哦。

好了!現在可以真正的刷新瀏覽器看看結果啦。
這裏寫圖片描述

我們可以看到頭部和尾部的信息都已經沒有了,說明測試已經成功了。

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

這種方法就簡單多了,不需要在配置文件中設置任何參數,也不需要開啓layout_on,直接在模板文件中指定佈局模板即可,相關的佈局模板調整也在模板中進行。

以前面的輸出模板爲例,這種方式的入口還是在Index/index.html 模板,但是我們可以修改下add模板文件的內容,在頭部增加下面的佈局標籤(記得首先關閉前面的layout_on設置,否則可能出現佈局循環):

{layout name=”layout/layoutname” /}

就表示採用application/index/view/layout/layoutname.html作爲佈局模板

下面我們來看看模板的代碼實現

{layout name="layout/layoutname" /}
{//__NOLAYOUT__}
<div>
這是 layout 模板佈局
中間內容
</div>

這裏在次強調,除了header和footer兩個模板保持不變之外,在配置文件中部不需要做任何配置。

接下來刷新看結果如何,同樣刷新需要清空緩存。
這裏寫圖片描述

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

{layout name=”layout/layoutname” replace=”[REPLACE]” /}

注意:替換字符在這裏不能用花括號,用中括號或是別的什麼都可以就算不用括號也行。要不然會替換不了內容。

還可以在模板佈局中的設置一些變量,例如:
設置title變量

{include file="layout/header"  title="這是 layout 傳過來的title"/}
__REPLACE__
{include  file="layout/footer" /}

然後在header文件中接收一下title

<!doctype html>
<html>
<head>
<title>[title]</title>
</head>
<body>
這個是頭部信息

結果就是:

這裏寫圖片描述

title被改變了。

還有第三種方法,我這裏就不介紹了。這種方法就是在裏面調用tp函數設置的,用法也很簡單有興趣的可以自己去看看。

thinkphp5模板佈局

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章