projectx/internal/pkg/tpl/render.go
2025-04-14 15:28:51 +08:00

47 lines
988 B
Go

package tpl
import (
"html/template"
"net/http"
v1 "management/internal/erpserver/service/v1"
"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.Session
config *TemplateConfig
templates map[string]*template.Template
menusvc v1.MenuService
}
func New(session session.Session, menusvc v1.MenuService) (Renderer, error) {
render := &render{
session: session,
menusvc: menusvc,
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
}