i am trying to change the delimiter for go in an html template. Unfortunately, it does not work in the render function, nor in the main function.
See https://pkg.go.dev/text/template#Template.Delims
package main
import (
"html/template"
"io"
"net/http"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
)
type Template struct {
templates *template.Template
}
func (t *Template) Render(w io.Writer, name string, data interface{}, c echo.Context) error {
t.templates.Delims("[[", "]]")
return t.templates.ExecuteTemplate(w, name, data)
}
func Hello(c echo.Context) error {
test := `{
"name" : "Ben",
"country" : "Germany",
"city" : "Berlin",
"body":{"test":"test","test2":"test2"}
}`
return c.Render(http.StatusOK, "hello", test)
}
func main() {
// Echo instance
e := echo.New()
t := &Template{
templates: template.Must(template.ParseGlob("public/views/*.html")),
}
t.templates.Delims("[[", "]]")
e.Renderer = t
e.GET("/hello", Hello)
// Middleware
e.Use(middleware.Logger())
e.Use(middleware.Recover())
// Start server
e.Logger.Fatal(e.Start(":8000"))
}
CodePudding user response:
You must call Delims
before ParseGlob
.
like this:
t := &Template{
templates: template.Must(template.New("").Delims("[[", "]]").ParseGlob("public/views/*.html")),
}