dpfln86244 2019-07-19 15:48
浏览 305
已采纳

HTML模板中的未定义函数

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.

  • 写回答

1条回答 默认 最新

  • douliaodan2738 2019-07-20 14:08
    关注

    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)
    

    Run it on the Go Playground.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?
  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi