# ThinkPHP6 视图
* 视图功能由 `\think\View` 类配合视图驱动(也即模板引擎驱动)类一起完成
---
## 一、模板渲染
### 1、模板渲染
* 控制器和模版,它们名字是对应的。
* 通过 `fetch` 方法,访问控制器时,就可以渲染模版
* 想使用 `fetch` 方法,要先 `use` 引入 `View`
```php
示例:
namespace app\controller;
use app\BaseController;
use think\facade\View;
class Index extends BaseController{
public function index(){
// 不带任何参数 自动定位当前操作的模板文件
return View::fetch();
}
}
```
* 这里如果我们没有视图文件,会报错:模版文件不存在。
* 第一步:创建一个跟控制器平级的目录,目录名:view
* 第二步:在 view 目录里创建 Index 目录
* 第三步:在Index目录下,创建 index.html 文件
* 访问地址:www.xxx.com/index.php/index/index
> 备:我们也可以创建多个方法或控制器,进行测试
---
### 2、多控制器 模板渲染
* 控制器文件名:按照驼峰法命名的。 首字母大写,第二个单词首字母也大写。
* 控制器的文件名和文件里的类名,要一样。有利于文件自动加载。
* 新建AppApi.php文件
```php
示例:
namespace app\controller;
use app\BaseController;
use think\facade\View;
class AppApi extends BaseController{
public function index(){
return View::fetch();
}
}
```
* 模版目录 `view` 下创建 `AppApi` 目录
* `AppApi` 目录下创建 `index.html` 文件
* 访问地址:www.xxx.com/index.php/appapi/index
> 备:模版目录名称 要跟控制器名称对应
---
### 3、多项目 模版渲染
* 第一步:多项目需要开启 `config/app.php` 里的 `auto_multi_app` 配置,值设为:true
* 第二步:在 `app` 目录下创建一个项目目录,目录名:`index`
* 第三步:把控制器 `controller` 和视图 `view` 拷贝到刚创建的目录里
* 访问地址:www.xxx.com/index.php/index/appapi/index
> 备:记得命名空间路径写正确
---
### 4、注入 `View`
* `ThinkPHP6` 使用 `View` 可能会冲突,我们就需要用注入的方式。
```php
示例:
namespace app\index\controller;
use app\BaseController;
use think\View;
class AppApi extends BaseController{
public function index(View $view){
return $view->fetch();
}
}
```
---
### 5、调用模版
* 上面我们讲了控制器和模版对应,名称一样。
* 现在我们讲 控制器调用不一样名称的模版。
```php
示例:
namespace app\index\controller;
use app\BaseController;
use think\View;
class Index extends BaseController{
public function index(){
// 调用对应名称模版
return View::fetch();
// 调用本控制器 task模版
return View::fetch('task');
// 调用本项目 AppApi控制器 index模版
return View::fetch('appapi/index');
// 调用本项目 AppApi控制器 index模版
return View::fetch('admin@member/index');
}
}
```
> 备:需要一个控制器两个或多个模版,就可以进行判断。
---
### 6、助手函数 `view`
```php
示例:
namespace app\index\controller;
use app\BaseController;
class Index extends BaseController{
public function index(){
// 调用对应名称模版
return view();
// 调用本控制器 task模版
return view('task');
}
}
```
---
## 二、模版赋值
### 1、模版赋值(控制器和视图交互)
* 使用 `assign` 方法进行模板变量赋值
```php
控制器示例:
namespace app\index\controller;
use app\BaseController;
use think\facade\View;
class Index extends BaseController{
public function index(){
View::assign('id',1);
View::assign('name','欧阳克');
View::assign([
'id' => 2,
'name' => '黄蓉'
]);
return View::fetch();
}
}
```
```html
视图示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>thinkphp6 课件</title>
</head>
<body>
<div style="color:red;">{$id}--{$name}</div>
</body>
</html>
```
---
### 2、助手函数 `view`
* 使用系统提供的助手函数 `view` 可以完成相同的功能
```php
控制器示例:
namespace app\index\controller;
use app\BaseController;
class Index extends BaseController{
public function index(){
return view('index',[
'id' => 3,
'name' => '郭靖'
]);
}
}
```
```html
视图示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>thinkphp6 课件</title>
</head>
<body>
<div style="color:red;">{$id}--{$name}</div>
</body>
</html>
```
- 序言
- PHP基础
- 认识PHP
- 环境安装
- PHP语法
- 流程控制
- PHP数组
- PHP函数
- PHP类与对象
- PHP命名空间
- PHP7新特性
- PHP方法库
- PHP交互
- 前后端交互
- 项目常规开发流程
- MySQL数据库
- 会话控制
- Ajax分页技术
- 细说函数
- 类与对象
- 对象进阶
- 类与对象进阶
- OOP面向对象
- 设计模式
- 路由与模板引擎
- 异常类
- PHP爬虫
- PHP抓取函数
- PHP匹配函数
- 正则表达式
- PHP字符串函数
- 抓取实战
- PHP接口
- 了解接口
- PHP插件
- PHPSpreadsheet
- ThinkPHP6
- 安装
- 架构
- 数据库
- 数据库操作
- 视图
- 模版
- 模型
- 杂项
- 命令行
- 交互
- 微信小程序
- 介绍
- 配置
- 组件
- 交互
- API
- 其他知识
- 百度小程序
- 介绍
- 配置
- 组件
- 交互
- API
- 其他知识
- Linux
- 服务器上线流程
- 安装svn
- MySQL
- 认识MySQL
- MySQL函数
- 杂项
- composer依赖管理工具