thinkphp里LAYOUT_ON是啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkphp里LAYOUT_ON是啥相关的知识,希望对你有一定的参考价值。

Thinkphp的模板引擎内置了布局模板功能支持,可以方便的实现模板布局以及布局嵌套功能。

有三种布局模板的支持方式:

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

这种方式仅需在项目配置文件中添加相关的布局模板配置,就可以简单实现模板布局功能,比较适用于全站使用相同布局的情况,需要配置开启LAYOUT_ON 参数(默认不开启),并且设置布局入口文件名LAYOUT_NAME(默认为layout)。

'LAYOUT_ON'=>true,
'LAYOUT_NAME'=>'layout',

开启LAYOUT_ON后,我们的模板渲染流程就有所变化,例如:

Class UserAction extends Action 
    Public function add() 
        $this->display('add');
    

在不开启LAYOUT_ON布局模板之前,会直接渲染Tpl/User/add.html 模板文件,开启之后,首先会渲染Tpl/layout.html 模板,布局模板的写法和其他模板的写法类似,本身也可以支持所有的模板标签以及包含文件,区别在于有一个特定的输出替换变量__CONTENT__,例如,下面是一个典型的layout.html模板的写法:

<include file="Public:header" />
__CONTENT__
<include file="Public:footer" />

读取layout模板之后,会再解析User/add.html 模板文件,并把解析后的内容替换到layout布局模板文件的__CONTENT__ 特定字符串。

当然可以通过设置来改变这个特定的替换字符串,例如:

'TMPL_LAYOUT_ITEM'      =>  '__REPLACE__'

但是一个布局模板同时只能有一个特定替换字符串。

采用这种布局方式的情况下,一旦User/add.html 模板文件或者layout.html布局模板文件发生修改,都会导致模板重新编译。

如果需要指定其他位置的布局模板,可以使用:

'LAYOUT_NAME'=>'Layout/layoutname',

就表示采用Tpl/Layout/layoutname.html作为布局模板。


如果某些页面不需要使用布局模板功能,可以在模板文件开头加上 __NOLAYOUT__ 字符串。

如果上面的User/add.html 模板文件里面包含有__NOLAYOUT__,则即使当前开启布局模板,也不会进行布局模板解析。

参考技术A 就是开启加载 layout.html文件的意思,一般我们把重复的头部放在layout文件里面
'LAYOUT_ON'=>true,
那么就是加载 layout文件

Thinkphp5.0第五篇

原样输出

使用literal标签防止模板标签被解析

例如

{literal}
        {$name}<br/>
{/literal}

模板单行注释

{//注释内容}

多行注释

{/*注释内容*/}

模板布局

全局配置方式

config.php里面模板设置相关加入如下内容

        'layout_on' => true,
        'layout_name' => 'layout',

在view里面新增layout.html

<html>
    <head>
        <meta charset="utf-8"/>
        <title>模板布局</title>
    </head>
    <body>
        <div style="width:100%;height:100px; background-color:red;"> </div>
        {__CONTENT__}
        <div style="width: 100%; height:100px;background-color:blue;">

        </div>
    </body>
</html>
       {__CONTENT__}里面包含index的内容

模板标签方式

配置文件里面不用设置仅仅在index.html里面加入一个

{layout name="模板名称"/}

使用layout控制模板布局

模板继承

在view下创建的模板base.html主要是{block}

<html>
    <head>
        <meta charset="utf-8"/>
        <title>模板继承</title>
    </head>
    <body>
            {block name="head"}
            <div style="width: 100%;height: 100px; background-color: yellow">
                这是基础模板的头部信息
            </div>
            {/block}<br/>
            {block name="footer"}
            <div style="width: 100%;height: 100px;background-color: green">
                这是基础模板的底部信息
            </div>
            {/block}
    </body>
</html>

然后在index.html下

使用

{extend name="base" /}

即可继承从而渲染,不过后面的内容会被覆盖,如果不想被覆盖在index.html里面不想被覆盖的block后面加一个

{__block__}即可

注意区块之外的内容是不会被渲染的

包含文件

{include file='模版文件1,模版文件2,...' }

例如在一个html里面包含一个html并进行渲染

{include file='../application/index/view/index/lang.html'}

以上是关于thinkphp里LAYOUT_ON是啥的主要内容,如果未能解决你的问题,请参考以下文章

thinkphp 使每一个模板页都包括一个header文件和一个footer文件

thinkphp5如何使用layout

thinkphp 报系统错误,请各位看看是啥原因

thinkphp5.1 - twig使用

thinkphp调整框架核心目录think的位置

ThinkPhp5 数据迁移(think-migration)