1. 需求
為啥要自定義分頁資料格式?
- laravel自帶的分頁資訊對於api來說顯得臃腫
- 在對接小程式的時候不需要那麼多的資訊
- 本著簡化分頁資料結構的目的來自定義分頁格式
- 最重要:拋磚引玉,合理的利用容器,用起laravel更得心應手。
2. 目標
自定義的分頁格式
{
"page": 1,
"list": [
{
// Result Object
}
],
"total": 11,
}
laravel自帶的分頁格式
{
"total": 50,
"per_page": 15,
"current_page": 1,
"last_page": 4,
"first_page_url": "http://laravel.app?page=1",
"last_page_url": "http://laravel.app?page=4",
"next_page_url": "http://laravel.app?page=2",
"prev_page_url": null,
"path": "http://laravel.app",
"from": 1,
"to": 15,
"data":[
{
// Result Object
},
{
// Result Object
}
]
}
3. 具體細節與程式碼
在bootstrap/app.php檔案或者appProvider中加入以下程式碼
//重新繫結到容器分頁類的實現者
$app->bind('Illuminate\Pagination\LengthAwarePaginator', function ($app, $options) {
return (new \App\Tool\Paginator($options['items'], $options['total'], $options['perPage'], $options['currentPage'], $options['options']));
});
實現\App\Tool\Paginator
<?php
namespace App\Tool;
use Illuminate\Pagination\LengthAwarePaginator;
class Paginator extends LengthAwarePaginator
{
public function toArray()
{
return [
'page' => $this->currentPage(),
'list' => $this->items->toArray(),
'total' => $this->total(),
];
}
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結