我正在使用 Golang Echo Labstack 框架构建一个前端网站,我想在我的模板视图中调用一些自定义函数。如何使用 Echo 执行此操作?
例如,我可以用 Gin 做到这一点
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。
非常感谢。
ITMISS
相关分类