Variable de plantilla de Golang isset
He creado una función para verificar si una variable está definida:
fm["isset"] = func(a interface{}) bool {
if a == nil || a == "" || a == 0 {
fmt.Println("is not set")
return false
}
fmt.Println("is set")
return false
}
tmpl := template.Must(template.New("").Funcs(fm).ParseFiles("templates/header.html"))
err := tmpl.ExecuteTemplate(w, "header", templateData)
En la plantilla tengo:
{{ if isset .Email }}
email is set
{{ end }}
Esta función funciona si la variable está contenida por eltemplateData
(que es una estructura personalizada que contiene un mapa y una cadena), pero me da un error si la variable no existe.
El error es:
executing "header" at <.Email>: can't evaluate field Email in type base.customData
En mi caso, "base.go" es el controlador y "customData" se define por:type customData struct{..}
.
Quiero poder reutilizar plantillas y mostrar algunas secciones solo si algunas variables se envían desde el controlador. Alguna idea de cómo puedo implementar una variableisset
verificar en el lado de la plantilla?
También intenté usar:{{ if .Email}} do stuff {{ end }}
Pero esto también me da el mismo error.
¿Alguna idea?