批改状态:合格
老师批语:
模板赋值
关键字:assign('name',$name);//模板赋值 终极简化 ; fetch('模板表达式')指定一个模板进行内容输出,以模块/view目录为根目录,模板表达式:模块@控制器/操作方法,return View::fetch('index@index/demo1',['name'=>$name]);
在controller下创建->view->index->demo1.html文件,与controller->Index.php->demo1()方法相对应
demo1/2.html
我的姓名是:<span style="color:orange">{$name}</span>!
<br>
我的工资是:<span style="color:orange">{$salary}</span>!Index.php
<?php
namespace app\index\controller;
use think\facade\View;//相当于给视图类做了一个静态代理,降内部方法全部看成静态的进行调用
use think\Controller;
class Index extends Controller
{
//模板赋值
public function demo1()
{
//1,assign('模板变量名',值)
$name = 'hyman';
$this->view->assign('name',$name);
//2,传参赋值:fetch('模板',[参数数组])
//3,对象赋值 直接赋值
$this->view->salary = 5000;
return $this->view->fetch();//index@index/demo2
}
//模板替换与过滤 过滤的方式模拟替换
public function demo2()
{
//tp51之前,直接删除了替换功能,采用config/template.php进行配置
$this->view->name = 'hyman';
$this->view->salary =8000;
//将模板中的hyman替换成:liu
$filter = function($content){
return str_replace('hyman','liu',$content);
};
return $this->filter($filter)->fetch();
}
}创建:controller->view->public->header.html/footer.html view->layout.html/base.html view->index->demo4.html/demo5.html 分别对应动态布局和模板继承
模板动态布局:
layout.html
{include file="public/header" /}
{__TEXT__}
{include file="public/footer" /}demo4.html
<style type="text/css">
.main{
width:800px;height:600px;margin:auto;background:lightgreen;text-align:center;line-height:600px;
}
</style>
<div class="main">主题内容</div>Index.php
public function demo4()
{
* 动态配置
* 1,不需要在模板文件中做任何配置
* 2,不需要在当前模板中添加任何标签
*/
//开启布局
// $this->view->engine->layout(true);
//$this->view->engine->layout('layout','{__TEXT__}');
//关闭布局
// $this->view->engine->layout(false);
// return $this->view->fetch('demo4');
$this->view //调用视图对象
->engine //模板引擎对象
->layout(true) //开启模板布局
->fetch('index\demo4'); //渲染模板,至少要给到控制器级别
}模板继承:
base.html
{//基础模板中只允许出现block标签}
{block name="header"}
{include file="public/header" /}
{/block}
{block name="main"}主题部分{/block}
{block name="course"}课程名称:{/block}
{block name="name"}小学生:{/block}
{block name="footer"}
{include file="public/footer" /}
{/block}demo5.html
{extend name="base" /}
{//将父模板中的main区块进行重写}
{block name="main"}
<h2 style="text-align:center">我是子模板网站的主题部分</h2>
{/block}
{block name="name"}{/block}
{//在子模板中写在block之外的的内容全部被忽略,父模板中会原样输出}
{block name="course"}
<h2 style="text-align:center">{__block__}PHP编程</h2>
{/block}Index.php
public function demo5()
{
/**
* 1,view/base.html:基础模板,工其他子模板进行继承
* 2,base.html内容全部要用标签{block}进行定义
*/
return $this->view->fetch();
}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号