camohub / paginator
Laravel 分页器
1.0.26
2021-07-12 10:07 UTC
Requires
- php: >=7.0.0
README
Laravel 的路由分页器或基于路由的分页器:)
本包解决了原生 Laravel 分页器生成带有查询字符串参数的 URL 的问题。
https://example.com/category?page=4
本包允许您根据路由模式创建带有分页参数的美丽 URL。
https://example.com/category/4
# with fallback to
https://example.com/category?page=4
安装
composer install camohub/paginator
示例
让我们想象一个带有路由的文章控制器
Route::get('/{categorySlug}/{page?}', 'ArticleController@index')->name('articles');
index 动作显示所需分类中的所有文章。
public function index(Request $request, $categorySlug, $page = 1)
{
$category = Category::where('slug', $categorySlug)->first()
if( ! $category ) abort(404);
$paginator = new Paginator($request, $category->articles(), 'articles', ['categorySlug' => $categorySlug]);
$view = [
'articles' => $paginator->getItems(),
'paginator' => $paginator,
'category' => $category,
];
return view('articles.index', $view);
}
Paginator __construct() 方法期望第二个参数为查询构建器,可以调用 skip() 和 take() 方法来分页集合。
内部实现看起来像
$this->items = $this->model->skip($this->skip)->take($this->perPage)->get();
视图将看起来像
@foreach( $articles as $a )
...
@endforeach
{{$paginator->render()}}
选项
Paginator 需要三个非可选参数。
- 请求对象
- 查询构建器/模型
- 路由名称
此外,还有一些可选参数可用于配置分页器。
- 路由参数 - 没有分页参数的路由参数。页码参数将合并到模板中。默认是 []。
- pageParam - 表示页码的路由参数名称。默认是 "page"。包将查找
$request->route()->parameter($pageParam)
或$request->query($pageParam)
- perPage - 每页项目数。默认是 15。
- sideItemsCount - 分页器中当前页周围的项目数。它与 Laravel 原生的 ->onEachSide() 分页器方法等效。默认是 3。
您可以通过简单的 MyPaginator extends Paginator 来覆盖整个分页器,也可以发布模板文件并重写它。当前模板基于 Bootstrap 4。
##简单分页器
$paginator = new Paginator($request, $category->articles(), 'articles', ['categorySlug' => $categorySlug]);