模板赋值
关键字: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(); }