First Commit
This commit is contained in:
21
controller/controller.go
Normal file
21
controller/controller.go
Normal file
@ -0,0 +1,21 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func Init() *gin.Engine {
|
||||
gin.SetMode(gin.DebugMode)
|
||||
|
||||
app := gin.New()
|
||||
app.Use(gin.Logger())
|
||||
app.Use(gin.Recovery())
|
||||
|
||||
// static files
|
||||
app.Static("/public", "./public")
|
||||
|
||||
// HTML templates
|
||||
app.HTMLRender = templatePath("views")
|
||||
|
||||
return app
|
||||
}
|
60
controller/html_renderer.go
Normal file
60
controller/html_renderer.go
Normal file
@ -0,0 +1,60 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"path"
|
||||
|
||||
"github.com/flosch/pongo2/v4"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/gin-gonic/gin/render"
|
||||
)
|
||||
|
||||
//pongoRender struct init
|
||||
type pongoRender struct {
|
||||
TmplDir string
|
||||
}
|
||||
|
||||
//templatePath html files path
|
||||
func templatePath(tmplDir string) *pongoRender {
|
||||
return &pongoRender{
|
||||
TmplDir: tmplDir,
|
||||
}
|
||||
}
|
||||
|
||||
func (p *pongoRender) Instance(name string, data interface{}) render.Render {
|
||||
var template *pongo2.Template
|
||||
fileName := path.Join(p.TmplDir, name)
|
||||
|
||||
if gin.Mode() == gin.DebugMode {
|
||||
template = pongo2.Must(pongo2.FromFile(fileName))
|
||||
} else {
|
||||
template = pongo2.Must(pongo2.FromCache(fileName))
|
||||
}
|
||||
|
||||
return &PongoHTML{
|
||||
Template: template,
|
||||
Name: name,
|
||||
Data: data.(pongo2.Context),
|
||||
}
|
||||
}
|
||||
|
||||
//PongoHTML struct
|
||||
type PongoHTML struct {
|
||||
Template *pongo2.Template
|
||||
Name string
|
||||
Data pongo2.Context
|
||||
}
|
||||
|
||||
//Render for gin interface render override
|
||||
func (p *PongoHTML) Render(w http.ResponseWriter) error {
|
||||
p.WriteContentType(w)
|
||||
return p.Template.ExecuteWriter(p.Data, w)
|
||||
}
|
||||
|
||||
//WriteContentType for gin interface WriteContentType override
|
||||
func (p *PongoHTML) WriteContentType(w http.ResponseWriter) {
|
||||
header := w.Header()
|
||||
if val := header["Content-Type"]; len(val) == 0 {
|
||||
header["Content-Type"] = []string{"text/html; charset=utf-8"}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user