视图
View 组件的配置文件位于 config/autoload/view.php
,若配置文件不存在可自行创建,以下为相关配置的说明:
配置文件格式示例:
<?php
declare(strict_types=1);
use Hyperf\View\Mode;
use Hyperf\View\Engine\BladeEngine;
return [
// 使用的渲染引擎
'engine' => BladeEngine::class,
// 不填写则默认为 Task 模式,推荐使用 Task 模式
'mode' => Mode::TASK,
// 若下列文件夹不存在请自行创建
'view_path' => BASE_PATH . '/storage/view/',
'cache_path' => BASE_PATH . '/runtime/view/',
],
];
如果您希望 来管理静态资源,请在 config/autoload/server.php
配置中增加以下配置。
return [
'settings' => [
...
// 静态资源
'document_root' => BASE_PATH . '/public',
'static_handler_locations' => ['/'],
'enable_static_handler' => true,
],
];
官方目前支持 Blade
和 Smarty
两种模板,默认安装 hyperf/view 时不会自动安装任何模板引擎,需要您根据自身需求,自行安装对应的模板引擎,使用前必须安装任一模板引擎。
composer require smarty/smarty
假设我们想要接入一个虚拟的模板引擎名为 TemplateEngine
,那么我们需要在任意地方创建对应的 TemplateEngine
类,并实现 Hyperf\View\Engine\EngineInterface
接口。
<?php
declare(strict_types=1);
class TemplateEngine implements EngineInterface
{
{
// 实例化对应的模板引擎的实例
$engine = new TemplateInstance();
// 并调用对应的渲染方法
return $engine->render($template, $data);
}
}
以下以 BladeEngine
为例,首先在对应的目录里创建视图文件 index.blade.php
。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Hyperf</title>
</head>
<body>
Hello, {{ $name }}. You are using blade template now.
</html>
控制器中获取 Hyperf\View\Render
实例,然后调用 render
方法并传递视图文件地址 index
和 渲染数据
即可,文件地址忽略视图文件的后缀名。
<?php
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' => 'Hyperf']);
}
}
访问对应的 URL,即可获得如下所示的视图页面: