douju8113 2019-01-01 15:22
浏览 190

如何在嵌套golang模板中使用自定义函数?

I have a webpage consisting of one layout.html and one content.html. Both contain calls to a custom function for translating strings.

When I call template.ParseFiles, the content is included into the layout and is served, but only strings in layout.html are translated while the strings from content.html disappear.

This works fine when I use single html files, but I can't get it work with nested files.

main.go

func executeMultiTmpl(w http.ResponseWriter, r *http.Request) {

  funcMap := template.FuncMap{
    "index": lookup,
  }
  tmpl, err := template.New("example.html").Funcs(funcMap).ParseFiles(
    "dev/html/example/layout.html",
    "dev/html/example/content.html",
  )
   var tpl bytes.Buffer
   err = tmpl.Execute(&tpl ,Translation)
   if err != nil {
    panic(err)
   }
}

layout.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Example Title - {{index . "About"}}</title>
</head>
<body>

{{ template "content.html" }}

</body>
</html>

content.html

<h2>{{index . "Some headline"}}</h2>

The file content.html is nested inside of layout.html. Afterwards the function lookup receives a map Translation and translates all strings in the layout.html file which are surrounded by {{index . }}. Unfortunately, the strings in the file content.html are not translated.

I know the function lookup is called, but it receives an empty Translation map.

When I remove the custom function and run it with the standard index function, I get a panic: executing "content.html" at : error calling index: index of untyped nil

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 运筹学排序问题中的在线排序
    • ¥15 关于#flink#的问题:关于docker部署flink集成hadoop的yarn,请教个问题flink启动yarn-session.sh连不上hadoop
    • ¥30 求一段fortran代码用IVF编译运行的结果
    • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
    • ¥15 lammps拉伸应力应变曲线分析
    • ¥15 C++ 头文件/宏冲突问题解决
    • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
    • ¥50 安卓adb backup备份子用户应用数据失败
    • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
    • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题