博主信息
博文 55
粉丝 0
评论 0
访问量 38564
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
5月29日作业
老专的博客
原创
783人浏览过

5月29日作业:

1、视图渲染与模板 filter 过滤(replace)

实例

<?php
namespace app\demo\controller;
use think\facade\View;
use think\Controller;

class Index extends Controller
{
    
    //一、模板渲染
    public function demo1()
    {
        $name = '邹海富';
        
        //1、使用视图方法:display()不通过模板,直接渲染内容,支持HTML标签
        echo View::display($name);
        echo '<br>';
        echo View::display('我的姓名是:'.$name);
        echo '<br>';
        //return View::display('我的姓名是:<span style="color:red">'.$name.
        //'</span>');
        echo '<br>';

        //2、建议使用fetch(),加载指定模板文件输出
        //fetch(模板表达式)
        //模板表达式: 模块@控制器/操作方法
        //模板默认根目录是:模块/view/控制器名/模板文件名
        //fetch('模板表达式',[模板变量数组],[模板配置数组])
       
        //除了直接导入View门面类进行调用之外,其实控制器Controller类封装模板中的
        //常用方法
        //只要当前控制器类继承了Controller,就可以直接使用这些内置方法
        //控制器类中有一个属性view,保存着视图类的实例对象
        echo View::fetch('demo@index/demo1',['name'=>'frank 邹']);
        echo '<br>';
        return $this->view->fetch('demo@index/demo1',['name'=>'peter 朱']);

    }

    //二、模板赋值
    public function demo2()
    {
        //1、模板赋值(不能输出): assign()
        //使用assign()必须要调用View类,以后我们统一使用Controller来调用
        $name = 'peter';
        $this->view->assign('name', $name);

        //2、传参方式: fetch()或view()刚才已经演示过了
        //3、对象方式:底是通过Controller中的二个魔术方法来实现视图类的数据注入的
        //$this->view->name = 'peter';

        //return $this->fetch('demo2');

        //如果是按默认规则创建的模板文件,则模板文件名可以省略
        return $this->view->fetch();    
    }

    //三、模板过滤与替换
    public function demo3()
    {
    	//tp51也之前版本相比,直接删除了模板字符串替换功能,而改为模板配置参数来实现
    	//config/template.php: 'tpl_replace_str' => [''=>''],
    	//不过,我建议大家在控制器使用filter()直接进行过滤替换,更简洁
    	//将模板中的peter zhu换成:朱老师
    	$this->view->assign('name','peter');
    	$filter = function($content) {
            return str_replace('peter', '朱老师', $content);
    	};
    	return $this->filter($filter)->fetch();
    }

    //四、模板布局
    public function demo4()
    {
    	/**
    	 *  1、在控制器动态配置
    	 *     1)、不需要在模板配置文件做任何配置,也不需要在当前模板中添加任何标签
    	 *     2)、当然,布局模板,还是要事先制作好的
    	 *     3)、直接调用:$this->view-engine->layout(true)开启
    	 */
    	
    	//2、动态开启模板布局,一切使用默认的布局参数:layout_name=layout,{__CONTENT__}
    	$this->view->engine->layout(true);
    	//return $this->view->fetch();

    	//3、关闭模板布局
    	//$this->view->engine->layout(false);
        //return $this->view->fetch();

    	//自定义模板布局参数,layout可以是任意的布局文件被替换的内容标识符也可以
        //自定义
    	//$this->view->engine->layout('layout','{__TEXT__}');
        return $this->view->fetch();	
    }

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

运行实例 »

点击 "运行实例" 按钮查看在线实例

2、模板布局与继承

实例

{//在当前模板中使用布局模板}
{//layout name="layout" /}
{//如果当前模板不需要调用布局模板,可以直接用下面的标签进行关闭}
{//__NOLAYOUT__}

<style type="text/css">
    .main {
        width: 800px;
        height: 600px;
        margin:auto;
    }
    
    .left {
            width: 200px;
            height: 600px;
            margin:auto;
            background:lightgreen;
            text-align: center;
            line-height: 600px;
            float: left;
    }
    .content {
        width: 400px;
        height: 600px;
        margin:auto;
        background:yellow;
        text-align: center;
        line-height: 600px;
        float: left;
    }
    .right {
        width: 200px;
        height: 600px;
        margin:auto;
        background:skyblue;
        text-align: center;
        line-height: 600px;
        float: left;
    }
</style>
<div class="main">
<div class="left">左边栏</div>
<div class="content">主页面</div>
<div class="right">右边栏</div>
</div>

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

<!doctype html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
   
    </head>
    <body>

{extend name="base" /}
{block name="main"}
<h1 style="text-align: center">我是子模板的网站的主体上部分</h1>
<style type="text/css">
    .main {
        width: 800px;
        height: 600px;
        margin:auto;
    }
    
    .left {
            width: 200px;
            height: 600px;
            margin:auto;
            background:lightgreen;
            text-align: center;
            line-height: 600px;
            float: left;
    }
    .content {
        width: 400px;
        height: 600px;
        margin:auto;
        background:yellow;
        text-align: center;
        line-height: 600px;
        float: left;
    }
    .right {
        width: 200px;
        height: 600px;
        margin:auto;
        background:skyblue;
        text-align: center;
        line-height: 600px;
        float: left;
    }
</style>
<div class="main">
<div class="left">左边栏</div>
<div class="content">主页面</div>
<div class="right">右边栏</div>
</div>

<h1 style="text-align: center">我是子模板的网站的主体下部分</h1>

{/block}
<h1 style="text-align: center">我是子模板外边部分,不显示</h1>
  </body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

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

{block name="main"}
<h1 style="text-align: center">我是基础模板内部分,不显示</h1>
{/block} 



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


<h1 style="text-align: center">我是基础模板外边部分</h1>

运行实例 »

点击 "运行实例" 按钮查看在线实例

3、运行图片

    1)、模板布局运行图片

52.png

2)、模板继承运行图片

51.png


批改状态:未批改

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学