静态分页是指页面的分页参数使用的是路由传参,这种场景下分页对象与 Server 的路由定义耦合性比较大。路由定义中需要给定一个 page 名称的路由参数,可以使用模糊匹配路由 *page,也可以使用命名匹配路由 :page,也可以使用字段匹配路由 {page}

示例1,使用模糊匹配路由

  1. package main
  2. import (
  3. "github.com/gogf/gf/v2/frame/g"
  4. "github.com/gogf/gf/v2/net/ghttp"
  5. "github.com/gogf/gf/v2/os/gview"
  6. )
  7. func main() {
  8. s := g.Server()
  9. s.BindHandler("/page/static/*page", func(r *ghttp.Request) {
  10. page := r.GetPage(100, 10)
  11. buffer, _ := gview.ParseContent(`
  12. <html>
  13. <head>
  14. <style>
  15. a,span {padding:8px; font-size:16px;}
  16. div{margin:5px 5px 20px 5px}
  17. </style>
  18. </head>
  19. <body>
  20. <div>{{.page1}}</div>
  21. <div>{{.page2}}</div>
  22. <div>{{.page3}}</div>
  23. <div>{{.page4}}</div>
  24. </body>
  25. </html>
  26. `, g.Map{
  27. "page1": page.GetContent(1),
  28. "page2": page.GetContent(2),
  29. "page3": page.GetContent(3),
  30. "page4": page.GetContent(4),
  31. })
  32. r.Response.Write(buffer)
  33. })
  34. s.SetPort(8199)
  35. s.Run()
  36. }

执行后,我们手动访问 http://127.0.0.1:8199/page/static/6 页面的结果如下:

分页管理-静态分页 - 图1

示例2,使用字段匹配路由

  1. package main
  2. import (
  3. "github.com/gogf/gf/v2/frame/g"
  4. "github.com/gogf/gf/v2/net/ghttp"
  5. "github.com/gogf/gf/v2/os/gview"
  6. )
  7. func main() {
  8. s := g.Server()
  9. s.BindHandler("/:obj/*action/{page}.html", func(r *ghttp.Request) {
  10. page := r.GetPage(100, 10)
  11. buffer, _ := gview.ParseContent(`
  12. <html>
  13. <head>
  14. <style>
  15. a,span {padding:8px; font-size:16px;}
  16. div{margin:5px 5px 20px 5px}
  17. </style>
  18. </head>
  19. <body>
  20. <div>{{.page1}}</div>
  21. <div>{{.page2}}</div>
  22. <div>{{.page3}}</div>
  23. <div>{{.page4}}</div>
  24. </body>
  25. </html>
  26. `, g.Map{
  27. "page1": page.GetContent(1),
  28. "page2": page.GetContent(2),
  29. "page3": page.GetContent(3),
  30. "page4": page.GetContent(4),
  31. })
  32. r.Response.Write(buffer)
  33. })
  34. s.SetPort(8199)
  35. s.Run()
  36. }

该示例的路由规则更加灵活,其中使用了 {page} 字段匹配规则,用于获取当前的分页页码信息。执行后,我们按照路由规则随意访问一个URL如: http://127.0.0.1:8199/order/list/6.html ,结果如下图所示:

分页管理-静态分页 - 图2