Implement shared template layout system
This commit is contained in:
parent
3be7fb76e7
commit
08b669fd8f
9 changed files with 69 additions and 45 deletions
|
|
@ -13,24 +13,32 @@ import (
|
|||
var templates embed.FS
|
||||
|
||||
func (h *Server) loadTemplates() {
|
||||
var err error
|
||||
h.tmpl, err = template.ParseFS(templates, "templates/*")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
h.tmpl = make(map[string]*template.Template)
|
||||
pages := []string{"orders", "order", "cake", "cakes", "confirmation"}
|
||||
for _, page := range pages {
|
||||
tmpl, err := template.ParseFS(templates,
|
||||
"templates/layout/*.html",
|
||||
"templates/"+page+".html",
|
||||
)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
h.tmpl[page] = tmpl
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Server) render(fetch fetcher, templateName string) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Set("content-type", "text/html")
|
||||
data, code, err := fetch(r)
|
||||
if err != nil {
|
||||
logging.ErrorPage(err, code).ServeHTTP(w, r)
|
||||
return
|
||||
}
|
||||
err = s.tmpl.ExecuteTemplate(w, templateName, data)
|
||||
err = s.tmpl[templateName].ExecuteTemplate(w, "layout", data)
|
||||
if err != nil {
|
||||
logging.ErrorPage(err, http.StatusInternalServerError).ServeHTTP(w, r)
|
||||
return
|
||||
}
|
||||
w.Header().Set("content-type", "text/html")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue