I want to use dynamic template rendering. According to the information, I should use the templates plugin, but I don’t know how to assign values to template fields in the code.
this is my index.html:
this is my caddyfile :
http://127.0.0.1:8098 {
root * /Users/sxf/Desktop/test/dist
userMiddleware
templates
file_server
}
I have written a plugin called userMiddleware, which is used to render dynamic templates, so should I assign values to template variables in this plugin? If so, how to assign a value to {{. Name}}
package user
type UserHandler struct {
User string
}
func init() {
caddy.RegisterModule(UserHandler{})
httpcaddyfile.RegisterHandlerDirective(“userMiddleware”, parseMiddlewarefile)
}
func parseMiddlewarefile(h httpcaddyfile.Helper) (caddyhttp.MiddlewareHandler, error) {
hw := new(UserHandler)
err := hw.UnmarshalCaddyfile(h.Dispenser)
return hw, err
}
func (m *UserHandler) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
for d.Next() {
if !d.Args(&m.User) {
return d.ArgErr()
}
}
return nil
}
func (UserHandler) CaddyModule() caddy.ModuleInfo {
return caddy.ModuleInfo{
ID: “http.handlers.userMiddleware”,
New: func() caddy.Module { return new(UserHandler) },
}
}
func (m UserHandler) ServeHTTP(w http.ResponseWriter, r *http.Request, next caddyhttp.Handler) error {
// todo
// how to assign a value to {{. Name}}
return next.ServeHTTP(w, r)
}
Looking forward to your answer, thank you