我正在用Golang Echo Labstack框架构建一个前端网站,我想在模板视图中调用一些自定义函数.如何使用Echo?
例如,我可以用杜松子wine 来做这个
func main() {
r := gin.Default()
r.SetFuncMap(template.FuncMap{
// Add my custom functions
"AddTS": util.AddTS,
"Encrypt": util.EncryptGeneral,
"CombineVariable": util.CombineVariable,
})
r.Static("/static", "./static")
r.LoadHTMLFiles("static/*/*") // load the static path
r.LoadHTMLGlob("templates/*/*")
route.Routes(r)
r.Run()
}
在我的模板视图中,我可以像这样简单地调用任何自定义函数.
range {{ .Data }}
<div>
{{ .data_value | AddTS }}
{{ .data_value | OtherCustomFunction }}
</div>
{{ end }}
但我似乎在Echo中找不到类似的方法,我如何实现一个可以在模板视图中使用的全局函数?
这是我当前的Echo文件
type TemplateRenderer struct {
templates *template.Template
}
func (t *TemplateRenderer) Render(w io.Writer, name string, data interface{}, c echo.Context) error {
// Add global methods if data is a map
if viewContext, isMap := data.(map[string]interface{}); isMap {
viewContext["reverse"] = c.Echo().Reverse
}
return t.templates.ExecuteTemplate(w, name, data)
}
func main() {
e := echo.New()
renderer := &TemplateRenderer{
templates: template.Must(template.ParseGlob("templates/*/*.tmpl")),
}
e.Renderer = renderer
e.Static("/static", "static")
e.Use(middleware.Logger())
e.Use(middleware.Recover())
e.Logger.Fatal(e.Start(":8183"))
}
*由于某些原因,我不能在这个项目中使用Gin,只能使用Echo.
谢谢.