projectx/internal/pkg/tpl/render.go
2025-03-28 17:51:34 +08:00

47 lines
1003 B
Go

package tpl
import (
"html/template"
"net/http"
systemv1 "management/internal/erpserver/biz/v1/system"
"management/internal/pkg/session"
)
type Renderer interface {
HTML(w http.ResponseWriter, req *http.Request, name string, data map[string]any)
JSON(w http.ResponseWriter, data any)
JSONF(w http.ResponseWriter, success bool, message string)
JSONOK(w http.ResponseWriter, message string)
JSONERR(w http.ResponseWriter, message string)
}
type render struct {
session session.ISession
config *TemplateConfig
templates map[string]*template.Template
menuBiz systemv1.MenuBiz
}
func New(session session.ISession, menuBiz systemv1.MenuBiz) (Renderer, error) {
render := &render{
session: session,
menuBiz: menuBiz,
config: &TemplateConfig{
Root: ".",
Extension: ".tmpl",
Layout: "base",
Partial: "partial",
},
}
templates, err := render.createTemplateCache()
if err != nil {
return nil, err
}
render.templates = templates
return render, nil
}