- 前面使用easyswoole将laravel中的blade模闆進行了內建,這裡也将內建到Hyperf架構中
- 引入模闆渲染
composer require hyperf/view
- 引入task并進行打開server.php進行配置
composer require hyperf/task
return [
// 這裡省略了其它不相關的配置項
'settings' => [
// Task Worker 數量,根據您的伺服器配置而配置适當的數量
'task_worker_num' => 8,
// 因為 `Task` 主要處理無法協程化的方法,是以這裡推薦設為 `false`,避免協程下出現資料混淆的情況
'task_enable_coroutine' => false,
// 靜态資源
'document_root' => BASE_PATH . '/public',
'enable_static_handler' => true,
],
'callbacks' => [
// Task callbacks
SwooleEvent::ON_TASK => [Hyperf\Framework\Bootstrap\TaskCallback::class, 'onTask'],
SwooleEvent::ON_FINISH => [Hyperf\Framework\Bootstrap\FinishCallback::class, 'onFinish'],
],
];
- 引入blade模闆并配置
composer require duncan3dc/blade
建立
App\TemplateEngine.php
檔案實作模闆接口
<?php
declare(strict_types=1);
namespace App\Engine;
use Hyperf\View\Engine\BladeEngine;
use Hyperf\View\Engine\EngineInterface;
class TemplateEngine implements EngineInterface
{
public function render($template, $data, $config): string
{
$engine = new BladeEngine();
return $engine->render($template, $data, $config);
}
}
- 打開
檔案進行模闆配置,如不存在自行建立config/autoload/view.php
<?php
declare(strict_types=1);
use App\Engine\TemplateEngine;
return[
'engine'=>TemplateEngine::class,//視圖渲染引擎
'mode'=>\Hyperf\View\Mode::TASK,//視圖渲染模式
'config'=>[
'view_path'=>BASE_PATH.'/storage/view',//視圖檔案預設位址
'cache_path'=>BASE_PATH.'/runtime/view'//視圖檔案緩存位址
]
];
- 控制器進行使用
<?php
namespace App\Controller;
use App\Model\Name;
use Hyperf\Di\Annotation\Inject;
use Hyperf\HttpServer\Annotation\AutoController;
use Hyperf\View\RenderInterface;
/**
* @AutoController()
*/
class ViewController
{
/**
* @Inject()
* @var RenderInterface
*/
private $render;
public function index()
{
$name = Name::all();
return $this->render->render('index',compact('name'));
}
public function test(RenderInterface $engine){
$name = Name::query()->find(1);
return $engine->render('two',compact('name'));
}
}
- index.blade.php模闆
<!DOCTYPE html >
<html lang="en">
<head>
<meta charset="UTF-8">
<title> Hyperf</title>
</head>
<body>
<table>
<thead>
<tr>
<td>name</td>
<td>age</td>
</tr>
</thead>
<tbody>
@foreach($name as $n)
<tr>
<td>{{$n->name}}</td>
<td>{{$n->age}}</td>
</tr>
@endforeach
</tbody>
</table>
</body>
</html>