分页管理由gpage模块实现,gpage提供了强大的动态分页及静态分页功能,并且为开发者自定义分页样式提供了极高的灵活度。

gpage模块主要用于生成分页的HTML代码,常用于MVC开发场景。

使用方式

  1. import "github.com/gogf/gf/v2/util/gpage"

接口文档

https://pkg.go.dev/github.com/gogf/gf/v2/util/gpage

分页对象

  1. // Page is the pagination implementer.
  2. // All the attributes are public, you can change them when necessary.
  3. type Page struct {
  4. TotalSize int // Total size.
  5. TotalPage int // Total page, which is automatically calculated.
  6. CurrentPage int // Current page number >= 1.
  7. UrlTemplate string // Custom url template for page url producing.
  8. LinkStyle string // CSS style name for HTML link tag <a>.
  9. SpanStyle string // CSS style name for HTML span tag <span>, which is used for first, current and last page tag.
  10. SelectStyle string // CSS style name for HTML select tag <select>.
  11. NextPageTag string // Tag name for next p.
  12. PrevPageTag string // Tag name for prev p.
  13. FirstPageTag string // Tag name for first p.
  14. LastPageTag string // Tag name for last p.
  15. PrevBarTag string // Tag string for prev bar.
  16. NextBarTag string // Tag string for next bar.
  17. PageBarNum int // Page bar number for displaying.
  18. AjaxActionName string // Ajax function name. Ajax is enabled if this attribute is not empty.
  19. }

创建分页对象

由于分页对象往往是在Web服务中使用,因此从框架v1.12版本开始,我们提供更加便捷的分页对象创建方式,分页对象集成到了ghttp.Request对象上,可以非常方便地通过Request.GetPage方法获取分页对象。该方法定义如下:

  1. func (r *Request) GetPage(totalSize, pageSize int) *gpage.Page

可以看到,获取分页对象仅需要传递总数量及分页数量即可。当然,分页对象也可以独立使用,由于篇幅有限,我们这里只介绍最常用且最简便的使用方式。

具体使用示例请查看后续章节。

预定义分页样式

方法GetContent提供了预定义的常见的分页样式,以便于开发者快速使用。当预定义的样式无法满足开发者需求时,开发者可以使用公开的方法来自定义分页样式(或者进行方法重载来实现自定义),也可以使用正则替换指定预定义的分页样式中的部分内容来实现自定义。

具体使用示例请查看后续章节。

使用Ajax分页功能

分页对象的AjaxActionName属性用于给定一个Ajax方法名,用于实现Ajax分页,但是需要注意的是,该Ajax方法名称需要前后端约定统一,并且该Ajax方法只有一个URL参数。以下是一个Ajax方法的客户端定义示例:

  1. function DoAjax(url) {
  2. // 这里读取URL的内容并根据业务逻辑进行内容展示
  3. }

具体使用示例请查看后续章节。