Laravel自定义分页样式

Laravel 的分页组件默认为 Bootstrap 的分页样式,但如果我们用的并不是 Bootstrap 或者说分页的 HTML结构不一样,这时我们需要自定义分页。其实 Laravel 的分页组件是非常的灵活,可以通过几种方法去实现我们的需求。

        我们可以从 Model 抽象类看到通过使用 Illuminate\Database\Query\Builder 可以查找出paginate 、simplePaginate的实现。然后直接查看 Illuminate\Pagination\BootstrapThreePaginater 可以查找到 render 方法。这方法就是输出 分页组件 默认的 html。

        进一步,可以看到simplePaginate 通过 Illuminate\Pagination\SimpleBootstrapThreePaginater 继承 Illuminate\Pagination\BootstrapThreePaginater 并对 render 方法进行重写,由此可见,我们可以通过继承 BootstrapThreePaginater 类并对 render 方法进行重写,就可以自定义分页的样式了。

方法一:通过继承

通过替换默认的生成类来修改分页的自定义样式:替换 laravel 分页组件默认生成的模板 出自 Inspirer(https://www.insp.top)。

方法二:通过视图

该方法主要通过利用 Laravel 提供的方法来实现,主要用到 currentPage()、url( $page )、lastPage()。

第一步

在需要调用分页的视图中引入 分页视图 ($data 所指的是分页数据,将它传去分页视图):

@include('pagination.default', ['paginator' => $data])
[br]

第二步

利用通过 第一步 传递过来的 $data , 如何去利用呢?
在 resources/views 目录下创建 pagination 目录,并创建一个视图default.blade.php 。添加一下代码:

    currentPage() == 1) ? ' disabled' : '' }}">        url(1) }}">    @for ($i = 1; $i lastPage(); $i++)    currentPage() == $i) ? ' active' : '' }}">        url($i) }}">{{ $i }}    @endfor    currentPage() == $paginator->lastPage()) ? ' disabled' : '' }}">        url($paginator->currentPage()+1) }}">

$paginator->currentPage():获取当前页

$paginator->lastPage():获取尾页

$paginator->url($page):获取页码的URL

[br]

最后的效果:

自定义分页样式,可以通过以上方法实现,当然个人建议还是用 方法一 吧,因为方法二 跟写原生没什么区别。

关键字:php, laravel, 分页

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部