# 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依賴管理工具