<?php namespace app\index\controller; // use think\facade\View; use think\Controller; class Index extends Controller { public function index() { return "<h1>hello world</h1>"; } public function demo1(){ $name = "petter 313"; // return $name; // fetch('模版表达式') // 模版表达式:模块@控制器/操作方法 // return View::display("我的名字叫".$name); // return View::fetch('index@index/demo1',['name'=>$name]); // return $this->view->fetch('index@index/demo1',['name'=>$name]); // 越过view属性调用fetch // return $this->fetch('index@index/demo1',['name'=>$name]); // 越过模版表达式 $this->assign('name',$name); return $this->fetch();//参数1可以为空 // 也可使用助手函数view,不依赖任何类 // return view('demo1',['name'=>$name]); } // 模版赋值 public function demo2(){ // 1assign('模版变量','值') $name = 'zk'; $this->view->assign('name',$name); // 2fetch('模版','赋值数组')赋值 // 3对象赋值 $this->view->money = '5000'; return $this->view->fetch(); } // 模版过滤 public function demo3(){ $this->view->name = 'zk'; $this->view->money = '5000'; $filter = function($content){ return str_replace('zk','owlcity',$content); }; return $this->filter($filter)->fetch(); } // 模版布局 public function demo4(){ /** * 1:全局配置 * config/template * 2:模版标签进行配置 * -1:不依赖全局配置,在模版中直接用标签进行控制 * -2:{layout name="布局模版名"} * -3:{关闭布局 __NOLAYOUT__} * 3:动态配置 */ // 开启布局 // $this->view->engine->layout('layout','{__TEXT__}'); //layout 参数二可以自定义与模版内容常量相同 // $this->view->engine->layout('layout'); // 关闭布局 // $this->view->engine->layout(false); // return $this->view->fetch(); // 链式操作 $this->view //调用视图对象 ->engine //开启模版引擎 ->layout('layout') //开启模版布局 ->fetch('index/demo4'); //渲染模版 } // 模版继承 public function demo5(){ return $this->view->fetch(); } }
模版布局 view/base.html
{//基础模版只允许出现block标签} {block name="header"} {include file="public/header"} {/block} {block name="main"}主体部分{/block} {block name="course"} thinkphp {/block} {block name="footer"} {include file="public/footer"} {/block}
自模版demo5.html
{extend name="base"} {//将父模版中的main区块进行重写} {block name="main"} <h1>将父模版中的main区块进行重写</h1> {/block} <!-- 在子模版中写在区块之外的内容全部忽略 --> <p>额外额外额外</p> {block name="course"} <h2>{__block__}1111</h2> {/block}