> 视图组件由 hyperf/view 实现并提供使用,满足您对视图渲染的需求,组件默认支持 Blade 、 Smarty 、 Twig 、 Plates 和 ThinkTemplate 五种模板引擎
[TOC]
## 安装
~~~
# 安装视图基础库
composer require hyperf/view
# 安装blade视图引擎
composer require duncan3dc/blade
~~~
## 配置支持视图
> 视图渲染引擎选择Blade,配置文件:/config/autoload/view.php
> 视图下默认是使用Task 运行模式,Controller则默认为Coroutine 运行模式
~~~
declare(strict_types=1);
use Hyperf\View\Mode;
use Hyperf\View\Engine\BladeEngine;
return [
// 使用的渲染引擎
'engine' => BladeEngine::class,
// 不填写则默认为 Task 模式,推荐使用 Task 模式
'mode' => Mode::TASK,
'config' => [
// 若下列文件夹不存在请自行创建
'view_path' => BASE_PATH . '/view/',
'cache_path' => BASE_PATH . '/runtime/view/',
],
];
~~~
## 安装 Task
### 安装组件
~~~
composer require hyperf/task
~~~
### 配置 Task
> 配置文件:/config/autoload/server.php
~~~
declare(strict_types=1);
use Hyperf\Server\SwooleEvent;
return [
// 这里省略了其它不相关的配置项
'settings' => [
// Task Worker 数量,根据您的服务器配置而配置适当的数量
'task_worker_num' => 8,
// 因为 `Task` 主要处理无法协程化的方法,所以这里推荐设为 `false`,避免协程下出现数据混淆的情况
'task_enable_coroutine' => false,
],
'callbacks' => [
// Task callbacks
SwooleEvent::ON_TASK => [Hyperf\Framework\Bootstrap\TaskCallback::class, 'onTask'],
SwooleEvent::ON_FINISH => [Hyperf\Framework\Bootstrap\FinishCallback::class, 'onFinish'],
],
];
~~~
## 配置静态资源
> 如果您希望 Swoole 来管理静态资源,请在 /config/autoload/server.php 配置中增加以下配置
> 根目录下创建 /public/images 和 /publis/css
~~~
return [
'settings' => [
...
// 静态资源
'document_root' => BASE_PATH . '/public',
'static_handler_locations' => ['/images', '/css'],
'enable_static_handler' => true,
],
];
~~~
## 使用测试
### Controller
~~~
declare(strict_types=1);
namespace App\Controller;
use Hyperf\HttpServer\Annotation\AutoController;
use Hyperf\View\RenderInterface;
/**
* @AutoController
*/
class ViewController
{
public function index(RenderInterface $render)
{
return $render->render('index', ['name' => 'wkkkk']);
}
}
~~~
### view
~~~
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Hyperf</title>
</head>
<body>
Hello, {{ $name }}. You are using blade template now.
<img src="/images/1.jpg" width="50" />
</body>
</html>
~~~