mirror of
https://github.com/labstack/echo.git
synced 2025-01-01 22:09:21 +02:00
054a310e70
Signed-off-by: Vishal Rana <vr@labstack.com>
59 lines
1.2 KiB
Markdown
59 lines
1.2 KiB
Markdown
+++
|
|
title = "Templates"
|
|
description = "How to use templates in Echo"
|
|
[menu.main]
|
|
name = "Templates"
|
|
parent = "guide"
|
|
weight = 3
|
|
+++
|
|
|
|
## Template Rendering
|
|
|
|
`Context#Render(code int, name string, data interface{}) error` renders a template
|
|
with data and sends a text/html response with status code. Templates can be registered
|
|
using `Echo.SetRenderer()`, allowing us to use any template engine.
|
|
|
|
Example below shows how to use Go `html/template`:
|
|
|
|
1. Implement `echo.Renderer` interface
|
|
|
|
```go
|
|
type Template struct {
|
|
templates *template.Template
|
|
}
|
|
|
|
func (t *Template) Render(w io.Writer, name string, data interface{}, c echo.Context) error {
|
|
return t.templates.ExecuteTemplate(w, name, data)
|
|
}
|
|
```
|
|
|
|
2. Pre-compile templates
|
|
|
|
`public/views/hello.html`
|
|
|
|
```html
|
|
{{define "hello"}}Hello, {{.}}!{{end}}
|
|
```
|
|
|
|
```go
|
|
t := &Template{
|
|
templates: template.Must(template.ParseGlob("public/views/*.html")),
|
|
}
|
|
```
|
|
|
|
3. Register templates
|
|
|
|
```go
|
|
e := echo.New()
|
|
e.Renderer = t
|
|
e.GET("/hello", Hello)
|
|
```
|
|
|
|
4. Render a template inside your handler
|
|
|
|
```go
|
|
func Hello(c echo.Context) error {
|
|
return c.Render(http.StatusOK, "hello", "World")
|
|
}
|
|
```
|