LaraStore商城系统中ajax分页实现 2016-11-18

Laravel框架默认内置的分页非常方便,比如

//获取商品列表并分页

Goods::paginate(20)

默认就输出了自带bootstrap样式的分页。

但是在处理 ajax的时候 ,需要进行ajax分页。可以写个Page类 用来处理ajax分页。


Page类只需要接受下如下几个参数

【1】当前页编号  current_page

【2】最后一页编号 last_page

【3】每页大小 per_page


系统生成一个总数字长度为13的分页导航。

【1】当分页总数小于等于13 

$last_page <= 13

那很简单  只需要输出所有分页 即可

return  range(1,$last_page);

【2】当总分页数大于13 这个时候 情况比较复杂

  当前页小于6  也就是当前页在整个分页的左侧

//总页数大于13
$last_page > 13

//当前页小于6
$current_page <=6

//这个时候 需要显示的分页列表模式为:10 + 3

显示模式为 10 + 3

即为:1 - 10 再加上 从最末页开始倒数的3页


【3】当前总页数大于13

//当前页距离第一页的位置 大于6 
$current_page > 6

//当前页距离最后一页 间距小于 6
($last_page  - $current_page)  <= 6

这个时候 当前页其实是比较接近尾页,显示模式为  3 + 10

也就是:第1页到第3页  再加上  从最后一页开始的倒数10页。


【4】最后一种情况

总页数大于 13 当前页 距离第一页 和距离最后一页的间距都大于 6

也就是当前页在整个分页的中间。

$last_page > 13

$current_page > 6

($last_page - $current_page) > 6

整个时候的显示模式为: 3 + 7 + 3


也就是  第1页 到第3页  + 以当前页为中心的左右各3页 + 倒数3页


我们看看 Tinker控制台输出的效果

第一种模式


第二种模式  10 + 3


第三种模式  3 + 10


第4种模式  3 + 7 + 3



这样前台输出的分页数字 可以方便的绑定vue的事件效果

本文章为 LaravelStore官网原创 转载请注明出处。谢谢合作!