使用數組創建分頁數據

使用數組創建分頁數據

說明

使用版本:5.1.35 LTS

遇到的一個場景是,數據是從 rpc 遠程調用接口獲取的數組,需要在前端頁面顯示分頁。

解決方法

可以使用 thinkPaginate 類的 make 方法創建分頁數據。make 方法原型:

/** ?????*?@access?public ?????*?@param???????$items???需要分頁的數據 ?????*?@param???????$listRows?每頁數據條數 ?????*?@param?null??$currentPage?當前頁數 ?????*?@param?null??$total??總頁數 ?????*?@param?bool??$simple??是否使用簡單模式(只有上一頁和下一頁) ?????*?@param?array?$options?其他參數選項,如查詢參數,url路徑等 ?????*?@return?Paginator??返回一個分頁對象 ?????*/ ????public?static?function?make($items,?$listRows,?$currentPage?=?null,?$total?=?null,?$simple?=?false,?$options?=?[]) ????{ ????????return?new?static($items,?$listRows,?$currentPage,?$total,?$simple,?$options); ????}

需要傳入的參數說明見代碼注釋。

由于 thinkPaginate 類的是一個抽象類,需要另一個類繼承它才能使用它的公有方法。框架中有 thinkpaginatordriverbootstrap 類繼承了它,所以可以使用該類去調用 make 方法。

所以,可以寫一個從數組創建分頁數據的方法,大概是這樣的:

private?function?getPaginateData($data,?$page,?$query){ ????return?Bootstrap::make($data,?$perPage,?$page,?$total,?false,?['path'?=>?url('module/controller/action'),?'query'?=>?$query]); }

使用該方法生成分頁對象后,比如:$data = $this->getPaginateData(…),在控制器中輸出到模板,然后就可以在模板頁面中添加:

{$data|raw}

模板引擎會自動渲染分頁樣式。

推薦教程:thinkphp教程

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享