[TOC]
## 控制器模板方法
### **模板渲染**
#### 类方法渲染
```
<?php
namespace app\home;
use denha\Controller;
class Hello extends Controller
{
public function index(){
return $this->view('模板地址');
}
}
```
#### 助手函数渲染
`show('模板地址')`;
### **模板地址**
模板内容存在`resources`目录下 以`.html` 文件格式命名
#### **空地址**
`$this->show('');` 则根据命名空间和action最终 如实例中模板地址存放位置应该在: resources/home/hello/index.html
#### **相对地址**
`$this->show('detail');` 则根据命名空间和地址名称组合 当前方法的地址应该在:resources/home/hello/detail.html
#### **带后缀地址**
`$this->show('detail.html');` 带后缀则直接以绝对路径检索 并且指定后缀名 当前方法地址应该存在 resources/detail.html
### **模板赋值**
#### 直接传递
`$this->show('模板地址',['id'=>1]);`
通过控制器 ['id'=>1] 可以将值传递到指定模板页面
>如果引用了Controller类 可以使用 assign类方法传递值
#### 类方法传递
`$this->assign('id',1);`
## 视图模板操作
### **读取变量值**
在控制器中传了值后 则可以在模板中渲染值
`<p>渲染指定id: {$id}</p> `
转换成php语言:
`<p>渲染指定id: <?php echo $id; ?></p> `
当前html显示的内容则是 渲染指定id:1 {$id} 将直接转换成id
### **读取数组变量**
`<p>渲染指定id: {$data.id}</p>`
`<p>渲染指定id: {$data['id']}</p>`
两种方式都可以直接读取数组中 key值为id的值
### **模板中使用公共方法**
`<p>渲染指定id: {:str_replace('1','2',$data.id)}</p>`
转换成php语言:
`<p>渲染指定id: <?php str_replace('1','2',$id); ?></p> `
>公共方法可以直接使用php原生方法 也可以直接使用助手函数方法
### **设置默认值**
`<p>渲染指定id: {default:$name|2}</p>`
`<p>渲染指定id: {??:$name|2}</p>`
转换成php语言:
`<p>渲染指定id: <?php echo $name ?: '2' ?></p> `
`<p>渲染指定id: <?php echo $name ?? '2' ?></p> `
### **模板语法if**
```
<div>
{if $id == 1}
<p>id值 == 1</p>
{elseif $id == 2}
<p>id值 == 2</p>
{else}
<p>id值 == {$id}</p>
{/if}
</div>
```
### **模板语法 loop**
数组循环渲染
```
<div class="loop">
{loop $ids $key $item}
<p>{$key}:{$item.id}</p>
<p>{$key}:{$item.name}</p>
{/loop}
</div>
<div class="loop">
{loop $ids $item}
<p>{$item.id}</p>
<p>{$item.name}</p>
{/loop}
</div>
```
### **模板语法include**
引用其他模板
`{include /admin/public/global_css}`
指定地址引用其他模板数据 模板起始地址是项目根目录下的resources目录