1
已解析的模板,我有我的模板,最初解析在应用程序启动(显然对速度的原因是这样)如何添加FuncMaps在golang
var templates = template.New("template")
filepath.Walk("views", func(path string, info os.FileInfo, err error) error {
if strings.HasSuffix(path, ".html") {
templates.ParseFiles(path)
}
return nil
})
log.Println("Templates Parsed")
然后,我有我的funcmaps其中获得加自己的功能(因为我需要请求对象,所以我可以得到他们的会话数据,像这样)
func View(w http.ResponseWriter, r *http.Request, tmplN string, data interface{}) {
tmpl := templates.Funcs(template.FuncMap{
"username": func() string {
session := Sesh(r)
username := ""
if session.Values["username"] != nil {
username = session.Values["username"].(string)
}
return username
},
"authenticated": func() bool {
session := Sesh(r)
authenticated := false
if session.Values["authenticated"] != nil {
authenticated = session.Values["authenticated"].(bool)
}
return authenticated
},
})
err := tmpl.ExecuteTemplate(w, tmplN, data)
if err != nil {
log.Println("Error " + err.Error())
}
}
但好像如果我不把Funcs
调用模板的解析之前它不工作,例如如果我尝试在我register
模板使用像这样:
{{ define "register" }}
{{ template "_header" .}}
{{ if authenticated }}
// Call FuncMap function
{{ end }}
<br/>
<br/>
<br/>
<div class="row align-center">
<div class="large-4 columns text-center">
<div id="RegistrationFormComponent"></div>
</div>
</div>
{{ template "_footer" .}}
{{ end }}
我得到一个错误,“登记”不存在,因为该功能authenticated
抛出时,它试图解析它的错误。任何有关我如何按预期工作的信息都将非常感谢。