Почему данные не передаются в другой html файл?

Есть код на го :
func Render(templateName string, data interface{}) string {
	var templateDir = config.EmailNotice.TemplatesDir
	tmpl := template.New(templateName)

	tmpl, err = tmpl.ParseFiles(
		templateDir + `emails/` + templateName,
		templateDir + `header.html`,
		templateDir + `footer.html`,
	)

	if err != nil {
		log.Println(err)
	}

	var tpl bytes.Buffer
	if err := tmpl.Execute(&tpl, data); err != nil {
		log.Println(err)
	}

	return tpl.String()
}


Который парсит три шаблона header:
{{ define "header" }}

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>

{{ $site := "example.com" }}
{{ if ne .user.Site  "" }}
    {{ $site := .user.Site }}
{{ end }}

<div>
    <h1>
        <a href="{{ $site }}">
            <img src="/assets/images/logo.png" alt="logo"/>
        </a>
    </h1>
</div>

{{ end }}


body:
{{ template "header" }}
<h1>Test</h1>
{{ template "footer"}}


footer:
{{ define "footer"}}
     its footer
 </div>
 </body>
 </html>
{{ end }}


Я передаю данные, которые хочу использовать в уже отрендеренном шаблоне, но го паникует :
template: header.html:11:6: executing "header" at <ne .user.Site "">: error calling ne: invalid type for comparison


Но если этот кусок :
{{ $site := "example.com" }}
{{ if ne .user.Site  "" }}
    {{ $site := .user.Site }}
{{ end }}

<div>
    <h1>
        <a href="{{ $site }}">
            <img src="/assets/images/logo.png" alt="logo"/>
        </a>
    </h1>
</div>

Перенести в шаблон body, то все работает. Но это как - то не правильно.
Что я делаю не так ?
Уже много всего почитал, но везде только примеры того, как использовать данные только в одном шаблоне
  • Вопрос задан
  • 78 просмотров
Решения вопроса 2
uvelichitel
@uvelichitel Куратор тега Go
habrahabr.ru/users/uvelichitel
Передайте dot в дочерние шаблоны
{{ template "header" . }}
<h1>Test</h1>
{{ template "footer" . }}
Ответ написан
@RogovP Автор вопроса
Сам спросил - сам ответил)

Ну вдруг кто - то будет искать:
{{ template "header" . }}
    <h1>Test</h1>
{{ template "footer"}}

тут подробнее
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы