59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
/*
 | 
						|
Package pagination provides utilities to setup a paginator within the
 | 
						|
context of a http request.
 | 
						|
 | 
						|
Usage
 | 
						|
 | 
						|
In your beego.Controller:
 | 
						|
 | 
						|
 package controllers
 | 
						|
 | 
						|
 import "github.com/astaxie/beego/pkg/infrastructure/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)
 | 
						|
 }
 | 
						|
 | 
						|
 | 
						|
In your view templates:
 | 
						|
 | 
						|
 {{if .paginator.HasPages}}
 | 
						|
 <ul class="pagination pagination">
 | 
						|
     {{if .paginator.HasPrev}}
 | 
						|
         <li><a href="{{.paginator.PageLinkFirst}}">{{ i18n .Lang "paginator.first_page"}}</a></li>
 | 
						|
         <li><a href="{{.paginator.PageLinkPrev}}">«</a></li>
 | 
						|
     {{else}}
 | 
						|
         <li class="disabled"><a>{{ i18n .Lang "paginator.first_page"}}</a></li>
 | 
						|
         <li class="disabled"><a>«</a></li>
 | 
						|
     {{end}}
 | 
						|
     {{range $index, $page := .paginator.Pages}}
 | 
						|
         <li{{if $.paginator.IsActive .}} class="active"{{end}}>
 | 
						|
             <a href="{{$.paginator.PageLink $page}}">{{$page}}</a>
 | 
						|
         </li>
 | 
						|
     {{end}}
 | 
						|
     {{if .paginator.HasNext}}
 | 
						|
         <li><a href="{{.paginator.PageLinkNext}}">»</a></li>
 | 
						|
         <li><a href="{{.paginator.PageLinkLast}}">{{ i18n .Lang "paginator.last_page"}}</a></li>
 | 
						|
     {{else}}
 | 
						|
         <li class="disabled"><a>»</a></li>
 | 
						|
         <li class="disabled"><a>{{ i18n .Lang "paginator.last_page"}}</a></li>
 | 
						|
     {{end}}
 | 
						|
 </ul>
 | 
						|
 {{end}}
 | 
						|
 | 
						|
See also
 | 
						|
 | 
						|
http://beego.me/docs/mvc/view/page.md
 | 
						|
 | 
						|
*/
 | 
						|
package pagination
 |