Golang Fiber c.渲染布局未执行正确模板

5q4ezhmt  于 2023-01-06  发布在  Go
关注(0)|答案(1)|浏览(138)

我试着用一个布局和不同的模板,

├── Main Folder
   ├── cmd
        └── main.go
   ├── controllers
   ├── models
   ├── views
        └── partials
            └── layout.html
        └── index.html
        └── dashboard.html
        └── login.html
   └── public
        └── sample.png

在我的layout.html中,我有

<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
    <h1>Loaded from Layout</h1>
  {{ template . }}
</body>
</html>

在我的dashboard.html

{{ define "dashboard" }}
    <h1>Dashboard</h1>
{{ end }}

在我的login.html

{{ define "login" }}
    <h1>Login</h1>
{{ end }}

当我通过控制器渲染 Jmeter 板时,它只加载login.html,它总是取最后一个html文件

// controller

func Dashboard(c *fiber.Ctx) error {
    return c.Render("dashboard", fiber.Map{
        "title": "Login | Selectify Admin",
    }, "partials/layout")
}

在主文件中,我已经告诉您在哪里可以找到视图

//main.go

// create a new HTML engine
    template_engine := html.New(
        "./views",
        ".html",
    )

    // create a new Fiber app
    app := fiber.New(fiber.Config{
        Views: template_engine, // set the views engine

        ErrorHandler: func(c *fiber.Ctx, err error) error {
            return utils.HandleError(c, err)
        },
    })

它给出错误“模板:“partials/layout”是一个不完整或空的模板”我如何使用一个布局发送或呈现正确的html文件??
Go版本1.19五版本2“github.com/gofiber/template/html“

ctehm74n

ctehm74n1#

已找到答案,我们必须使用{{embed}}而不是模板,然后它将包含您从控制器传递的正确模板

<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
    <h1>Loaded from Layout</h1>
  {{ embed  }}
</body>
</html>

相关问题