如何在Laravel 8博客应用中实现仅含上下页的文章分页器?
实现Laravel 8极简分页(仅上下页)的可行方案
方案一:手动构建分页链接(快速实现)
直接在模板中利用Laravel分页实例的内置方法,替换默认分页代码,完全匹配你要的HTML结构:
<!-- Pager --> @if($articles->hasPages()) <div class="clearfix"> <ul class="pagination"> <!-- 旧文章(下一页):Laravel分页页码越大,内容越旧 --> @if($articles->hasNextPage()) <li class="prev"> <a class="btn btn-primary" href="{{ $articles->withQueryString()->nextPageUrl() }}">Older Posts →</a> </li> @endif <!-- 新文章(上一页):页码越小,内容越新 --> @if($articles->hasPreviousPage()) <li class="next"> <a class="btn btn-primary" href="{{ $articles->withQueryString()->previousPageUrl() }}">← Newer Posts</a> </li> @endif </ul> </div> @endif
- 核心方法说明:
hasNextPage():判断是否存在下一页(旧文章页)nextPageUrl():生成下一页的URLhasPreviousPage():判断是否存在上一页(新文章页)previousPageUrl():生成上一页的URLwithQueryString():保留当前页面的查询参数(比如搜索关键词),不需要可以去掉
方案二:自定义分页视图(适合多处复用)
如果多个页面都需要这种极简分页,可以自定义Laravel的分页视图,实现复用:
创建自定义视图文件
在resources/views/vendor/pagination目录下新建simple-pager.blade.php,将上面的分页代码粘贴进去。调用自定义视图
在模板中调用分页时,指定使用这个自定义视图:
@if($articles->hasPages()) {!! $articles->withQueryString()->links('vendor.pagination.simple-pager') !!} @endif
- (可选)全局设置默认视图
如果想让所有分页默认使用这个视图,在app/Providers/AppServiceProvider.php的boot()方法中添加:
use Illuminate\Pagination\Paginator; public function boot() { // 设置默认分页视图 Paginator::defaultView('vendor.pagination.simple-pager'); }
之后直接调用$articles->links()就会自动使用你的极简分页视图。
内容的提问来源于stack exchange,提问作者Razvan Zamfir
相关产品推荐
相关产品推荐

