October/Winter CMS插件开发之数据分页Paginate方法
以前写过关于系统内置列表组件的分页方法,今天记录一下开发插件调用数据手动分页的方法
$this['results'] = Julian\Documentation\Models\Doc::where("category_id", $this['record']->id)->paginate(2);
在这样的一个查询结果中如果指定了Paginate
方法那么它的返回结果中会有很多分页参数,该方法有两个参数,第二个参数可不设
Paginate(dataNumberPerPage
, currentPageNumber
)
除了Paginate
外还有一个叫simplePaginate
的方法,顾名思义它更简单一些,返回的数据中不提供lastPage
和total
这两个值。
在以上查询结果可在前端生成分页元素
{% if results.hasPages %} <ul class="pagination"> <li> {% if results.currentPage > 1 %} <a href="{{ results.previousPageUrl }}" rel="prev">«Prev</a> {% else %} <span class="disabled">«</span> {% endif %} </li> {% for page in range(1, results.lastPage) %} <li class="{{ results.currentPage == page ? 'active' : null }}"> <a href="{{ results.url(page) }}">{{ page }}</a> </li> {% endfor %} <li> {% if results.hasMorePages %} <a href="{{ results.nextPageUrl }}" rel="next">Next»</a> {% else %} <span class="disabled">»</span> {% endif %} </li> </ul> {% endif %}
分页返回的全部参数
$results->count() $results->currentPage() $results->hasMorePages() $results->lastPage() // Not available when using simplePaginate $results->nextPageUrl() $results->perPage() $results->previousPageUrl() $results->total() // Not available when using simplePaginate $results->url($page)