beego新版本的分页求助?
package controllers
import "github.com/astaxie/beego/utils/pagination"
type PostsController struct {
beego.Controller
}
func (this *PostsController) ListAllPosts() {
// sets this.Data["paginator"] with the current offset (from the url query param)
postsPerPage := 20
paginator := pagination.SetPaginator(this.Ctx, postsPerPage, CountPosts())
// fetch the next 20 posts
this.Data["posts"] = ListPostsByOffsetAndLimit(paginator.Offset(), postsPerPage)
}
CountPosts()参数是不是数据库表中的count计数?
ListPostsByOffsetAndLimit(paginator.Offset(), postsPerPage) 这个方法怎么理解怎么运用?里面的参数代表啥意思?
强力观光膜拜团
10 years, 4 months ago
Answers
刚看了下源码,
paginator.Offset()
得到的是当前的偏移条数,即
limit [offset,] count
中的offset,在beego中是这样实现的
(p.Page() - 1) * p.PerPageNums
,其中PerPageNums即你传入的postsPerpage,而p.Page()的实现是
func (p *Paginator) Page() int {
if p.page != 0 {
return p.page
}
if p.Request.Form == nil {
p.Request.ParseForm()
}
p.page, _ = strconv.Atoi(p.Request.Form.Get("p"))
if p.page > p.PageNums() {
p.page = p.PageNums()
}
if p.page <= 0 {
p.page = 1
}
return p.page
}
很明显,这里需要你在请求里传入一个p来表示当前页码,而每页数量则是你指定的20,举个例子,假设你这个接口名字是posts,那你希望得到第101-120条的接口即为
http://host.com/posts?p=6
残日浮生夏
answered 10 years, 4 months ago