布局模板三种方式

Original 2019-04-06 22:56:36 447
abstract:第一种:全局配置模式适用于全站使用相同布局的情况,需要在config中配置开启layout_on参数,默认是不开启的,还有设置入口文件名,默认是layout;<?phpreturn [    //调试模式    'APP_DEBUG' => true,    //模板的布局    '

第一种:全局配置模式


适用于全站使用相同布局的情况,需要在config中配置开启layout_on参数,默认是不开启的,还有设置入口文件名,默认是layout;



<?php

return [


    //调试模式

    'APP_DEBUG' => true,

    //模板的布局

    'template'  => [

        'layout_on'     =>  true,

        'layout_name'   =>  'layout'

    ]

];

layout_on开启之后,从控制器fetch(‘index’)渲染后,本来不会直接渲染index.html文件,而是会到自定义的layout.html文件中去渲染,在其中会出现一个{_CONTENT_},这个就代表了要渲染的index模板文件,是将index的内容替换了{_CONTENT_}内容;



{include file='header' /}

{__CONTENT__}

{include file='footer' /}

这样,我就可以实现头尾分离,直接在index.html文件中写内容了;


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




第二种:模板标签方式


这种方式要关闭layout_on,负责会出现布局循环;


直接添加


{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()函数中传值即可;


$this->view->engine->layout('newLayout');

如果已经开启了全局,要关闭页面的布局模板,也可以使用这个方法关闭它:


$this->view->engine->layout(false);


Correcting teacher:天蓬老师Correction time:2019-04-08 10:12:08
Teacher's summary:布局其实是在模板继承的更加层级的抽象, 大多情况下, 模板继承基本上已经满足要求了, 也更灵活

Release Notes

Popular Entries