# tp5的三种渲染模板方式
## 直接使用方法内的return返回的方式直接输出
## 使用json输出,直接采用json函数
```
$data = ['a'=>1, 'b'=>2, 'c'=>3];
return json($data);
```
## 使用view输出模板
```
return view();
```
*****
# 模板布局的三种方法
## 第一种方式:全局配置方式
* 在/config/template.php模板文件中添加如下代码
```
// 开启全局模板布局
'layout_on' => true,
// 全局模板布局文件名
'layout_name' => 'layout',
// 修改默认的占位符{__CONTENT__}
'layout_item' => '{__TEXT__}',
```
* 在view文件夹中新建文件夹public放入公共的文件如:header.html、footer.html,在view文件夹中新建文件layout.html,该文件的内容如下:
```
{include file="public/header" /}
{__CONTENT__}
{include file="public/header" /}
```
* 在其他模板文件中就只修改不是公共的代码就行,不需要引入其他的任何文件,如:news.html的内容为
```
<h2>我是网站的主体内容,此代码的头部底部不需要引入任何代码</h2>
```
*****
### 标注:开启layout全局配置后,模板的加载是先加载layout.html文件再加载其他的文件
*****
## 第二种方式:模板标签方式
这种布局模板不需要在配置文件中设置任何参数,也不需要开启`layout_on`,直接在模板文件中指定布局模板即可,相关的布局模板调整也在模板中进行。
*****
# 模板继承
* 在view/public文件夹中创建基础文件(父文件)base.html
* 在父级文件base.html只包含公共的头部和尾部文件以及 区块部分
```
{block name="body"}
主体(此处的主体是不会被显示的,block的name属性名可以随意)
{/block}
```
* 在其他模板中要继承基础模板;如在news.html文件中的写法
```
{extend name="public/base" /}
{block name="body"}
<h2>此处为news.html中的独立部分,此处的block相当于实例化基础文件的区块,对区块进行重写操作</h2>
{/block}
```
*****
注释:在子模板中可以使用{__block__}继承父级中的主体两个字的内容,在子模板中为空时清空主模板的内容
![](https://img.kancloud.cn/54/19/541927f0d8e5ab331ce1773630d704db_584x311.png)
*****