response.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package utility
  2. import (
  3. "fmt"
  4. "github.com/gogf/gf/v2/errors/gcode"
  5. "github.com/gogf/gf/v2/errors/gerror"
  6. "github.com/gogf/gf/v2/frame/g"
  7. "github.com/gogf/gf/v2/net/ghttp"
  8. "net/http"
  9. )
  10. type (
  11. localHtmlRender struct{}
  12. Params = map[string]interface{}
  13. )
  14. const ErrorFilePath = "error.html"
  15. var (
  16. HtmlRender localHtmlRender
  17. )
  18. // Render 渲染html页面
  19. func (l *localHtmlRender) Render(r *ghttp.Request, fileName string, params ...Params) {
  20. var (
  21. err error
  22. res string
  23. usedParams Params
  24. )
  25. if len(params) > 0 {
  26. usedParams = params[0]
  27. }
  28. usedParams["hasLogin"] = JySessionLoginEd(r)
  29. usedParams["Request"] = r.Request
  30. //当移动端未找到模版,渲染pc模版
  31. for _, filePath := range GetCommonRenderCachePaths(r.Request.UserAgent(), fileName) {
  32. res, err = g.View().Parse(r.Context(), filePath, usedParams)
  33. if gerror.Code(err) != gcode.CodeInvalidParameter {
  34. break
  35. }
  36. }
  37. if err != nil {
  38. g.Log().Error(r.Context(), "渲染%s页面异常 %v", fileName, err)
  39. l.RenderError(r, fmt.Errorf("页面异常"), params...)
  40. } else {
  41. r.Response.Write(res)
  42. }
  43. }
  44. // RenderError 渲染异常页面
  45. func (l *localHtmlRender) RenderError(r *ghttp.Request, err error, params ...Params) {
  46. var usedParams Params
  47. if len(params) > 0 {
  48. usedParams = params[0]
  49. }
  50. if usedParams == nil {
  51. usedParams = Params{}
  52. }
  53. usedParams["ErrMsg"] = err
  54. res, err := g.View().Parse(r.Context(), ErrorFilePath, usedParams)
  55. if err != nil {
  56. r.Response.Write(fmt.Sprintf("出错啦%v", err.Error()))
  57. } else {
  58. r.Response.Write(res)
  59. }
  60. }
  61. // NotFound 未找到页面
  62. func (l *localHtmlRender) NotFound(r *ghttp.Request) {
  63. http.NotFound(r.Response.ResponseWriter, r.Request)
  64. }