多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
> 视图组件由 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> ~~~