I can't pass a custom function to the HTML template with the following syntax/steps:
t, err := template.ParseFiles("name.tpl")
if err != nil {
return
}
err = t.Funcs(template.FuncMap{"add": add}).Execute(w, nil)
if err != nil {
return
}
...
...
...
func add(a int8, b int8) int8 {
return a + b
}
Needed function is add
, there are no errors during the compilation, but while trying to render HTML template I get an error function "add" not defined
. What am I missing?
P.S. please don't offer other ways of parsing template, with something like template.New...
and so on. I wish to use THIS syntax.
Use this function:
func parseFiles(funcs template.FuncMap, filenames ...string) (*template.Template, error) {
return template.New(filepath.Base(filenames[0])).Funcs(funcs).ParseFiles(filenames...)
}
Call it like this:
t, err := parseFiles(template.FuncMap{"add": add}, "name.tpl")
if err != nil {
return
}
err = t.Execute(w, nil)