logo Buffalo slack logo
Plantillas
Frontend

Templating#

Este documento solo aplica cuando se usa github.com/gobuffalo/buffalo/render.

Consulta github.com/gobuffalo/plush para mas detalles sobre el paquete de plantillas.

Buffalo utiliza por defecto plush as its template engine.

Introducción a Plush#

Plush - Consejos, trucos y pruebas#

Uso general#

Plush te permite capturar las variables de contexto para usarlas en cualquier lugar en tus plantillas.

actions/index.go
templates/index.plush.html
Output
func myHandler(c buffalo.Context) error {
  c.Set("name", "John Smith")
  return c.Render(http.StatusOK, r.HTML("index.plush.html"))
}

Plush Ejemplos#

Condicionales#

IF
ELSE
ELSE IF
Multiple Conditions
<%= if (true) { %>
  <!-- some template content -->
<% } %>
actions/main.go
templates/index.plush.html
Output
func MyHandler(c buffalo.Context) error {
	// ...
	c.Set("userName", "John Smith")
	return c.Render(http.StatusOK, r.HTML("templates/index.plush.html"))
}

Iteraciones#

A través de Slices#

Cuando recorremos a través de slices, el bloque en el que se realiza el bucle tendrá acceso al contexto “global”.

La sentencia for toma 1 o 2 argumentos. Cuando se usa la versión de 2 argumentos, el primer argumento es el “indice” del bucle y el segundo argumento es el valor del elemento del slice.

actions/main.go
Loop using 2 Arguments
Loop using 1 Arguments
func MyHandler(c buffalo.Context) error {
  c.Set("names", []string{"John", "Paul", "George", "Ringo"})
  return c.Render(http.StatusOK, r.HTML("index.plush.html"))
}

A través de Mapas#

El buble a través de mapas usando el helper each tambien está soportado, y sigue directrices similares al bucle a través de slices.

Cuando se usa la version de 2 argumentos, el primer argumento es la llave del mapa y el segundo argumento es el valor del elemento en el mapa.

actions/main.go
Loop using 2 Arguments
Loop using 1 Arguments
func ColorsHandler(c buffalo.Context) error {
	colors := map[string]interface{}{
		"White":  "#FFFFFF",
		"Maroon": "#800000",
		"Red":    "#FF0000",
		"Purple": "#800080",
	}

	c.Set("colors", colors)
	return c.Render(http.StatusOK, r.HTML("home/colors.plush.html"))
}
Puedes ver más ejemplos en el repositorio plush.