2016-05-21 10 views
0

Ich mache derzeit eine Web-App mit Go. Ich möchte auf meine Vorlagen wissen, wann der Benutzer angemeldet ist oder nicht, und ich zur Zeit mache es mit diesem AnsatzVariablen für goroutines

response := &viewCharacter{true} 
template.Renderer.ExecuteTemplate(w, "character_search.html", response) 

Wie Sie sehe ich viewCharacter struct bin vorbei, die nur einen Bool dann auf einer Vorlage Gespeichert enthält Ich kann folgendes tun

{{ if .Logged }} 

Gibt es einen anderen Ansatz, dies zu tun? anstatt jede Vorlage eine geloggte Boole weiterzugeben?

Vielleicht eine Variable für jede Goroutine des HTTP-Handlers setzen, die speichert, wenn der Benutzer angemeldet ist oder nicht?

Antwort

0

Es gibt nur zwei Möglichkeiten, die ich zwischen dem go-Code und der Vorlage kommunizieren kann.

Die erste ist die, die Sie verwenden. Wenn Sie eine Struktur an die ExecuteTemplate-Funktion übergeben, können Sie auf ihr gesamtes Feld in der Vorlage zugreifen.

Das zweite ist andere Funktionen registrieren mit:

func (t *Template) Funcs(funcMap FuncMap) *Template 

documentation for more information See. Die funcMap ist eine einfache map [string] Schnittstelle {}, Sie können jede Funktion registrieren und sie in der Vorlage aufrufen, indem Sie ihren Namen (den Schlüssel der Karte) verwenden.

+0

Aber wie kann ich eine funcMap-Variable für jede Anfrage festlegen? –

+0

@AlvaroCarvajalNakosmai Sie legen es einmal fest, bevor Sie Ihren http-Handler starten. – OneOfOne

Verwandte Themen