Lorsque vous travaillez avec des mises en page complexes dans des applications Web, il est souvent utile de créer un modèle de base qui sert de base à d'autres pages. Dans le package html/template de Go, cela peut être réalisé à l'aide des directives {{define}} et {{template}}.
Considérez l'exemple suivant où vous avez un fichier de mise en page de base (base.html) :
<!DOCTYPE html> <html lang="en"> <body> header... {{template "content" .}} footer... </body> </html>
Et des pages séparées (page1.html et page2.html) qui réutilisent cette mise en page de base avec leur propre contenu personnalisé :
{{define "content"}} <div> <h1>Page1</h1> </div> {{end}} {{template "base.html"}}
{{define "content"}} <div> <h1>Page2</h1> </div> {{end}} {{template "base.html"}}
Le problème que vous rencontrez est que les pages 1 et 2 utilisent le même HTML pour le rendu, qui est défini dans page2.html. Pour résoudre ce problème, nous devons nous assurer que les deux pages déclarent et utilisent leurs propres sections de contenu uniques dans le bloc {{template}}.
Une meilleure approche consiste à définir le contenu du modèle dans des fichiers séparés, comme indiqué. ci-dessous :
base.html:
{{define "base"}} <!DOCTYPE html> <html lang="en"> <body> header... {{template "content" .}} footer... </body> </html> {{end}}
page1.html:
{{define "content"}} I'm page 1 {{end}}
page2 .html :
{{define "content"}} I'm page 2 {{end}}
Dans votre application, vous pouvez ensuite analyser le contenu et les fichiers de modèle de base dans un objet modèle à l'aide de template.New() et ParseFiles(). Par la suite, vous pouvez créer le HTML final en exécutant le modèle de base avec le contexte souhaité à l'aide de ExecuteTemplate().
tmpl, err := template.New("").ParseFiles("page1.html", "base.html") // check your err err = tmpl.ExecuteTemplate(w, "base", yourContext)
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!