laravel怎么实现自定义样式的分页功能

广告:宝塔Linux面板高效运维的服务器管理软件 点击【 https://www.bt.cn/p/uNLv1L 】立即购买

laravel怎么实现自定义样式的分页功能

随着 Laravel 框架的不断发展,现在越来越多的 Web 项目都选择了它,当然也有很多开发者选择使用 Laravel 开发自己的网站。在日常开发中,对于实现功能的实现,通常的做法是先寻找开源的库或者自己写组件,互联网上有很多前人的经验与总结,本篇文章就是其中之一,它会告诉你如何使用 Laravel 自带的分页类来实现自定义样式的分页。

Laravel 自带的分页类

Laravel 框架自带了分页库,使用起来非常方便。在控制器中我们一般使用 paginate() 方法来查询数据并返回分页结果,而在 Blade 模板中我们可以直接使用 links() 方法来渲染分页链接,看下面的代码:

// 在控制器中查询数据并返回分页结果$data = DB::table('table_name')->paginate(15);// 在 Blade 模板中通过 links() 方法渲染分页链接{{ $data->links() }}
登录后复制

这样代码就完成了分页查询的工作,并且将分页链接渲染到了页面上。但是这样的链接样式是默认的,如果想要更改样式,我们需要自定义视图。

自定义视图

我们先来了解下 links() 方法,我们可以在 Blade 模板中输出一下 {{ $data->links() }} 的值,得到的结果是这样的:

<ul class="pagination">    <li class="page-item disabled" aria-disabled="true" aria-label="&laquo; Previous">        <span class="page-link" aria-hidden="true">&lsaquo;</span>    </li>    <li class="page-item active" aria-current="page"><span class="page-link">1</span></li>    <li class="page-item"><a class="page-link" href="http://localhost?page=2">2</a></li>    <li class="page-item"><a class="page-link" href="http://localhost?page=3">3</a></li>    <li class="page-item"><a class="page-link" href="http://localhost?page=4">4</a></li>    <li class="page-item"><a class="page-link" href="http://localhost?page=5">5</a></li>    <li class="page-item">        <a class="page-link" href="http://localhost?page=2" rel="next" aria-label="Next &raquo;">&rsaquo;</a>    </li></ul>
登录后复制

我们发现,links() 方法默认渲染的分页链接是一个无序列表,每一项都是一个独立的 li 元素,其中 active 类表示当前页码,disabled 类表示不可用的页码。如果我们想要自定义分页链接的样式,就需要在视图文件中覆盖 Laravel 默认的链接渲染。

在 Laravel 中,可以使用 php artisan make:view 命令来生成视图文件,如下:

php artisan make:view pagination
登录后复制

这个命令将在 resources/views 目录下创建一个名为 pagination.blade.php 的文件。在该文件中写入如下代码:

@if ($paginator->hasPages())    <nav>        <ul class="pagination">            {{-- Previous Page Link --}}            @if ($paginator->onFirstPage())                <li class="page-item disabled" aria-disabled="true" aria-label="@lang('pagination.previous')">                    <span class="page-link" aria-hidden="true">&lsaquo;</span>                </li>            @else                <li class="page-item">                    <a class="page-link" href="{{ $paginator->previousPageUrl() }}" rel="prev" aria-label="@lang('pagination.previous')">&lsaquo;</a>                </li>            @endif            {{-- Pagination Elements --}}            @foreach ($elements as $element)                {{-- "Three Dots" Separator --}}                @if (is_string($element))                    <li class="page-item disabled" aria-disabled="true"><span class="page-link">{{ $element }}</span></li>                @endif                {{-- Array Of Links --}}                @if (is_array($element))                    @foreach ($element as $page => $url)                        @if ($page == $paginator->currentPage())                            <li class="page-item active" aria-current="page"><span class="page-link">{{ $page }}</span></li>                        @else                            <li class="page-item"><a class="page-link" href="{{ $url }}">{{ $page }}</a></li>                        @endif                    @endforeach                @endif            @endforeach            {{-- Next Page Link --}}            @if ($paginator->hasMorePages())                <li class="page-item">                    <a class="page-link" href="{{ $paginator->nextPageUrl() }}" rel="next" aria-label="@lang('pagination.next')">&rsaquo;</a>                </li>            @else                <li class="page-item disabled" aria-disabled="true" aria-label="@lang('pagination.next')">                    <span class="page-link" aria-hidden="true">&rsaquo;</span>                </li>            @endif        </ul>    </nav>@endif
登录后复制

这段代码是 Laravel 默认的分页视图代码,我们可以将其拷贝到 pagination.blade.php 文件中,然后对其进行自定义修改。

自定义样式

自定义样式就看开发者自己的喜好了,比如我们可以将分页的链接修改为按钮样式:

<nav aria-label="Page navigation example">  <ul class="pagination justify-content-center">    @if ($paginator->onFirstPage())        <li class="page-item disabled"><span class="page-link">上一页</span></li>    @else        <li class="page-item"><a class="page-link" href="{{ $paginator->previousPageUrl() }}">上一页</a></li>    @endif    @foreach ($elements as $element)        @if (is_string($element))            <li class="page-item disabled"><span class="page-link">{{ $element }}</span></li>        @endif        @if (is_array($element))            @foreach ($element as $page => $url)                @if ($page == $paginator->currentPage())                    <li class="page-item active"><span class="page-link">{{ $page }}</span></li>                @else                    <li class="page-item"><a class="page-link" href="{{ $url }}">{{ $page }}</a></li>                @endif            @endforeach        @endif    @endforeach    @if ($paginator->hasMorePages())        <li class="page-item"><a class="page-link" href="{{ $paginator->nextPageUrl() }}">下一页</a></li>    @else        <li class="page-item disabled"><span class="page-link">下一页</span></li>    @endif  </ul></nav>
登录后复制

由于分页链接通常不会太多,并且不同页面的分页链接样式也可能不同,因此我们这里只提供了一种简单的修改方式,开发者可以根据自己的需求灵活调整。

总结

通过本文的介绍,我们了解到了 Laravel 框架自带的分页类是如何实现的,以及如何通过自定义视图来修改分页链接的样式。当然,这种自定义方式并不仅限于分页样式,开发者还可以将它应用到其他各种布局样式中。

在实际开发中,优秀的开发者总是能够发现框架的潜力并按照自己的需求进行优化,这就是成为一个优秀开发者所必须掌握的技术之一。希望本文能够对大家有所帮助,也希望大家能够对 Laravel 框架有更深入的了解和应用。

以上就是laravel怎么实现自定义样式的分页功能的详细内容,更多请关注9543建站博客其它相关文章!

广告:SSL证书一年128.66元起,点击购买~~~

9543建站博客
一个专注于网站开发、微信开发的技术类纯净博客。

作者头像
admin创始人

肥猫,知名SEO博客站长,14年SEO经验。

上一篇:CentOS yum如何安装php7.4
下一篇:如何使用PHP开发CMS系统的备选方案

发表评论

关闭广告
关闭广告