October/Winter CMS插件开发之数据分页Paginate方法

以前写过关于系统内置列表组件的分页方法,今天记录一下开发插件调用数据手动分页的方法

$this['results'] = Julian\Documentation\Models\Doc::where("category_id", $this['record']->id)->paginate(2);

在这样的一个查询结果中如果指定了Paginate方法那么它的返回结果中会有很多分页参数,该方法有两个参数,第二个参数可不设

Paginate(dataNumberPerPage, currentPageNumber)

除了Paginate外还有一个叫simplePaginate的方法,顾名思义它更简单一些,返回的数据中不提供lastPagetotal这两个值。

在以上查询结果可在前端生成分页元素

{% 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)

Post Comment