随着 Laravel 框架的不断发展,现在越来越多的 Web 项目都选择了它,当然也有很多开发者选择使用 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="« Previous"> <span class="page-link" aria-hidden="true">‹</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 »">›</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">‹</span> </li> @else <li class="page-item"> <a class="page-link" href="{{ $paginator->previousPageUrl() }}" rel="prev" aria-label="@lang('pagination.previous')">‹</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')">›</a> </li> @else <li class="page-item disabled" aria-disabled="true" aria-label="@lang('pagination.next')"> <span class="page-link" aria-hidden="true">›</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怎么实现自定义样式的分页功能的详细内容。更多信息请关注PHP中文网其他相关文章!