Maison  >  Article  >  développement back-end  >  Golang Fiber c. La disposition du rendu n'applique pas les modèles corrects.

Golang Fiber c. La disposition du rendu n'applique pas les modèles corrects.

WBOY
WBOYavant
2024-02-09 13:54:181038parcourir

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

Golang Fiber est un framework Web hautes performances largement utilisé dans le développement du langage Go. Cependant, parfois lorsque vous utilisez Fiber pour restituer une mise en page, vous pouvez rencontrer des problèmes où le modèle n'est pas exécuté correctement. Cela peut être dû à un bug dans le code ou à un problème de configuration. Dans cet article, l'éditeur PHP Apple analysera ce problème en détail et vous proposera des solutions pour vous aider à surmonter ce défi. Que vous soyez un développeur débutant ou expérimenté, vous pouvez acquérir des connaissances et des compétences utiles grâce à cet article pour améliorer vos capacités de développement de Golang Fiber.

Contenu de la question

J'essaie d'utiliser une mise en page avec différents modèles,

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

Dans mon layout.html j'ai

<!doctype html>
<html lang="en">
<head>
</head>
<body>
    <h1>loaded from layout</h1>
  {{ template . }}
</body>
</html>

Dans mon dashboard.html

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

Dans mon login.html

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

Lorsque je restitue le tableau de bord via le contrôleur, il charge uniquement login.html et il obtient toujours le dernier fichier html

// controller

func dashboard(c *fiber.ctx) error {
    return c.render("dashboard", fiber.map{
        "title": "login | selectify admin",
    }, "partials/layout")
}

Dans le fichier principal, j'ai déjà indiqué où trouver la vue

//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)
        },
    })

Une erreur s'est produite "Modèle : 'partiels/mise en page' est un modèle incomplet ou vide" Comment envoyer ou restituer le bon fichier HTML en utilisant une seule mise en page ?

aller à la version 1.19 cinquième édition 2 "github.com/go fibre/template/html"

Solution

J'ai trouvé la réponse, Nous devons utiliser {{embed}} au lieu du modèle, il contiendra alors le modèle correct que vous transmettez depuis le contrôleur

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer