@wargych

Как передать переменную в шаблон?

Есть хэндлер:
func IndexHandler(w http.ResponseWriter, r *http.Request) {

t, err := template.ParseFiles("templates/index.html", "templates/header.html", "templates/footer.html")

if err != nil {
fmt.Fprintf(w, err.Error())

}
c := ReadCookie(r)
IsAuthorized, Username := IsAuthorized(c)
fmt.Println(IsAuthorized, Username)
postCollection := GVDB.PostCollection // объект MongoDB

PostDocuments := []documents.PostDocument{}
postCollection.Find(nil).All(&PostDocuments)
Posts := []models.Post{}
for _, doc := range PostDocuments {
Post := models.Post{doc.Id, doc.Title, doc.Content}
Posts = append(Posts, Post)
}

t.ExecuteTemplate(w, "index", Posts)
}

Есть шаблон:
{{ define "index" }}

{{ template "header"}}
{{ range $value := . }}
<div class="row">
	<div class="col-xs-2">
	</div>
	<div class="col-xs-8">
		{{if $.IsAuthorized}}
		<h1><a href="/edit?id={{$value.Id}}">{{ $value.Title }}</a></h1>
		{{else}}
		<h1><a href="/view?id={{$value.Id}}">{{ $value.Title }}</a></h1>
		{{end}}
	</div>
	<div class="col-xs-2">
	</div>
</div>
<div class="row">
	<div class="col-xs-2">
	</div>
	<div class="col-xs-8">
		{{ $value.Content }}
	</div>
	<div class="col-xs-2">
	</div>
</div>
{{ end }}

{{ template "footer" }}

{{ end }}


В таком виде проверка на IzAuthorized не проходит. Как это сделать правильно? Как вообще можно передать проверку на авторизацию в шаблон и что можно почитать на тему работы с шаблонами? Смотрел официальную документацию и статью: https://github.com/astaxie/build-web-application-w... ,но все что пробовал - не подошло.
  • Вопрос задан
  • 190 просмотров
Решения вопроса 1
yellow79
@yellow79
Senior Software Engineer
Вам надо передать IsAuthorized в шаблон, примерно как-то так

https://play.golang.org/p/ytzbaUnvKMH
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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