if statement - template - Usar condiciones dentro de plantillas
if django html (1)
Traté de convertir tu código en un ejemplo de trabajo mínimo, y creo que tu código y tu plantilla funcionan como se esperaba. Puedes ver mi código (y ejecutarlo) en el campo de juegos Go .
Mi suposición sobre lo que salió mal: ¿Notaste que {{define ...}}
solo define una plantilla para uso futuro. Aún necesitará decirle a Go que realmente use esta plantilla, ya sea usando {{ template "header" }}
o similar en una plantilla principal, o usando templates.ExecuteTemplate
.
El uso de sentencias if dentro de plantillas realmente me deja perplejo.
Estoy tratando de poner una class = "active"
dentro de una lista de navegación hecha con plantillas de golang, para hacer un menú de pestañas básicas que detecte la pestaña activa. Aquí está mi intento:
{{define "header"}}
<!DOCTYPE html>
<html>
<head>
<title>Geoprod</title>
{{template "stylesheet" .}}
</head>
<body>
<nav class="navbar" role="navigation">
<div class="navbar-header">
<a{{if eq .Active "accueil"}} class="active"{{end}} href="/">Geoprod</a>
</div>
<div class="navbar-body">
<ul class="navbar-list">
<li{{if eq .Active "societe"}} class="active"{{end}}><a href="/societe">Société</a></li>
<li{{if eq .Active "dossier"}} class="active"{{end}}><a href="/dossier">Dossier</a></li>
<li{{if eq .Active "temps"}} class="active"{{end}}><a href="/temps">Temps</a></li>
<li{{if eq .Active "mails"}} class="active"{{end}}><a href="/mails">Mails</a></li>
</ul>
</div>
</nav>
{{end}}
Y en main.go:
var FuncMap = template.FuncMap{
"eq": func(a, b interface{}) bool {
return a == b
},
}
var templates = template.Must(template.ParseGlob("templates/*.html"))
y en func main ()
templates.Funcs(FuncMap)
El programa compila, pero he descubierto que al agregar {{if eq .Active "something"}} class="active"{{end}}
(^^ que incluí aquí) hace que el programa no muestre ningún texto más . ¿Alguna idea de por qué?