视图与模板布局总结

原创 2018-12-24 17:10:58 241
摘要:模板渲染public function demo1()     {         $name = 'Eddie';         retur

模板渲染

public function demo1()
    {
        $name = 'Eddie';
        return $this->fetch('index@index/demo1',['name'=>$name]);

        // return view('demo1',['name'=>$name]);//不推荐使用,助手函数方法
    }

模板赋值

//模板赋值
    public function demo2()
    {
        //1.assign('模板变量名',值)
        $name = 'eddie';
        $this->view->assign('my_name',$name);

        //2.传参赋值:fetch('模板',[参数数组])
        //3 对象赋值:__set() __get()
        $this->view->age = 32;
        return $this->view->fetch();
    }

模板过滤与替换

public function demo3()
    {
        //模板中的内容替换
        $this->view->name = 'eddie';
        $this->view->age = 31;

        $filter = function($content){
            return str_replace('eddie','eddie 付', $content);
        };
        return $this->filter($filter)->fetch();
    }

模板布局

controller

public function demo4()
    {
        /**
         * 动态配置
         */
        return $this->view//调用视图对象
            ->engine//模板引擎对象
            ->layout('layout','{__TEXT__}')//开启模板布局
            ->fetch('index/demo4');//渲染模板,至少给到控制器级别
    }

layout.html

{include file="public/header" /}
{__TEXT__}
{include file="public/footer" /}

header.html

<style type="text/css">
    .header {
        width: 800px;
        height: 60px;
        margin:auto;
        background:wheat;
        text-align: center;
        line-height: 60px;
    }
</style>
<div class="header">头部</div>

footer.html

<style type="text/css">
    .footer {
        width: 800px;
        height: 60px;
        margin:auto;
        background:wheat;
        text-align: center;
        line-height: 60px;
    }
</style>
<div class="footer">底部</div>

模板继承

controller

//模板继承
    public function demo5()
    {
        /**
         * 1.在view/base.html: 做为被其它模板继承的基础模板文件
         * 2.base.html中,需要被子模板重写的内容全部用{block name=""}进行定义
         * 3.子模板中直接用{extend name="" /}继承即可
         */
        
        return $this->view->fetch();
    }

base.html

{block name="header"}
{include file="public/header" /}
{/block}

{block name="main"}主体部分{/block}
{block name="course"}技能名称:{/block} <br>

{//site区块,在子模块中未进行重写,会原样显示}
{block name="site"}PHP中文网{/block} <br>

{block name='name'}Edward1{/block}

{block name="footer"}
{include file="public/footer" /}
{/block}

{//<h3>标签中的内容会原样输出到子模板中}
<h3>我是基础模板中的内容(不管怎样都原样输出)</h3>

{/* 
    1.基础模板中,应该只有block标签,而不应该有其它的标签;
    2.写在block标签之外内容,会原样输出到子模板中  
*/}

demo5.html

{extend name="base" /}
{block name="main"}
<h1 style="text-align: center">我是子模板的网站的主体部分(重写父模板的内容)</h1>
{/block}
{block name="course"}{__block__}学习速度快{/block}

{//清除基础模板中name区块的内容}
{block name="name"}{/block}


{/*
    1.子模板中,只能对基础模板中的区块block进行重写;
    2.子模板中不能写其它内容,否则会直接忽略掉;
    4.子模块中未重写的区块内容,将原样显示
    3.子模拟中的区块顺序无所谓;
    4.如果子模块中的区块内容为空,则是清除区块中的原内容
*/}

{//以下内容不会显示在模板中}
<a href="http://www.php.cn">欢迎访问PHP中文网</a>


批改老师:韦小宝批改时间:2018-12-24 17:55:38
老师总结:写的很不错哦!代码条例很清晰!整理整理当做笔记都可以了!

发布手记

热门词条