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)