日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Hyper集成laravel中使用的blade模板

作者:渡目成書 更新時間: 2022-01-28 編程語言
  • 前面使用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>

在這里插入圖片描述

原文鏈接:https://blog.csdn.net/weixin_43674113/article/details/108831604

欄目分類
最近更新