我试图在我的模板中添加一个函数来“人性化”(https://gowalker.org/github.com/dustin/go-humanize)输出,但似乎我做错了,因为我得到了这个错误:
恐慌:模板:dashboard.tmpl:192:未定义函数“humanizeTime”
func renderTemplate(w http.ResponseWriter, name string, data map[string]interface{}) error {
//functions for templates
templateFuncs := template.FuncMap{
"humanizeTime": func(t time.Time) string {
return humanize.Time(t)
},
}
tmpl := Templates[name+".tmpl"].Funcs(templateFuncs)
w.Header().Set("Content-Type", "text/html; charset=utf-8")
err := tmpl.ExecuteTemplate(w, name, data)
if err != nil {
log.Printf("Error rendering template: %s", err.Error())
http.Error(w, err.Error(), http.StatusInternalServerError)
return errors.New("Error trying to render template")
}
return nil
}
补充:我在 init() 上定义和加载我的模板映射:
var Templates map[string]*template.Template
if Templates == nil {
Templates = make(map[string]*template.Template)
}
layouts, err := filepath.Glob("templates/*.tmpl")
if err != nil {
panic(err)
}
for _, layout := range layouts {
Templates[filepath.Base(layout)] = template.Must(template.ParseFiles(layouts...))
}
我只是将我的定义更改为:
for _, layout := range layouts {
Templates[filepath.Base(layout)] = template.Must(template.ParseFiles(layouts...)).Funcs(templateFuncs)
}
但还没有工作,我得到了同样的错误:未定义。
请问有人可以帮我吗?谢谢。
相关分类