@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... ,но все что пробовал - не подошло.
  • Вопрос задан
  • 144 просмотра
Решения вопроса 1
yellow79
@yellow79
Senior Software Engineer
Вам надо передать IsAuthorized в шаблон, примерно как-то так

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

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

Войти через TM ID
Похожие вопросы
Boomstarter Москва
от 110 000 до 160 000 руб.
TechOps Москва
от 3 000 до 4 500 usd.
2Reallife Москва
от 100 000 до 130 000 руб.
19 авг. 2018, в 00:49
600 руб./в час
18 авг. 2018, в 17:54
6000 руб./за проект
18 авг. 2018, в 16:00
60000 руб./за проект