У меня есть веб-страница, состоящая из одного layout.html и одного content.html.Оба содержат вызовы пользовательской функции для перевода строк.
Когда я вызываю template.ParseFiles, содержимое включается в макет и обрабатывается, но переводятся только строки в layout.html, а строки из content.html исчезают.
Это работаетхорошо, когда я использую отдельные html-файлы, но не могу заставить его работать с вложенными файлами.
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>
Файл content.html вложен в layout.html.После этого функция lookup получает карту Translation и переводит все строки в файле layout.html, которые окружены {{index.}}.К сожалению, строки в файле content.html не переведены.
Я знаю, что вызывается функция lookup , но она получает пустую карту Translation .
Когда я удаляю пользовательскую функцию и запускаю ее со стандартной функцией index , у меня возникает паника: выполняется «content.html» в: ошибка вызова index: индекс нетипизированного nil