# ThinkPhP5 视频教程(二十六讲):视图和模板-二 #### 模板布局 现在使用模板布局来进一步简化模板定义。 首先需要定义一个布局模板文件,放到 application/index/view/layout.html内容如下: ~~~ {include file="index/header" title="这是 layout 传过来的title"/} 这是 layout 模板布局 {__CONTENT__} {include file="index/footer" /} ~~~ application/index/view/index/test28.html改成: ~~~ {--layout name="layout" /--} {--__NOLAYOUT__--} <h2>用户列表({$count})</h2> {volist name="list" id="user" } <div class="info"> ID:{$user.user_id}<br/> 昵称:{$user.nickname}<br/> 邮箱:{$user.email}<br/> 生日:{$user.birthday}<br/> </div> {/volist} ~~~ 如果你所有的模板文件都统一使用布局,并且都是有同一个布局模板,那么可以统一配置而不需要在模板文件中使用layout标签定义 在应用配置或者模块配置中添加如下设置参数: ~~~ 'template' => [ 'layout_on' => true, 'layout_name' => 'layout', 'layout_item' => '[__REPLACE__]' ] ~~~ #### 标签定制 可以设置模板标签的定界符: ~~~ 'template' => [ // 模板引擎类型 支持 php think 支持扩展 'type' => 'Think', // 模板路径 'view_path' => '../template/index/', // 模板后缀 'view_suffix' => '.tpl', // 模板文件名分隔符 'view_depr' => '_', // 模板引擎普通标签开始标记 'tpl_begin' => '{', // 模板引擎普通标签结束标记 'tpl_end' => '}', // 标签库标签开始标记 'taglib_begin' => '<', // 标签库标签结束标记 'taglib_end' => '>', ], ~~~ #### 输出替换 如果部署的目录变化的话,资源文件的路径就会跟着变化,这里我们采用输出替换功能,使得资源文件的引入动态化 可以在输出之前对解析后的内容进行替换,使用: ~~~ / 读取用户数据 public function read($id='') { $user = UserModel::get($id); $this->assign('user',$user); $this->view->replace([ '__PUBLIC__' => '/static', ]); return $this->fetch(); } ~~~ 模板文件改为: ~~~ <html> <head> <meta charset="UTF-8"> <title>[title]</title> <link charset="utf-8" rel="stylesheet" href="__PUBLIC__/common.css"> </head> <body>* ~~~ ~~~[youku] XMjc0MDg3MzEyMA =856x523 ~~~ **如果视频无法播放,多换几个浏览器试试, 优酷很垃圾, 很多浏览器不兼容.** Demo下载地址: http://pan.baidu.com/s/1dEDCmgp 视频播放密码: tp99999 [需要TPshop商城源码的可前往TPshop官网免费下载安装](http://www.tp-shop.cn)