Laravel如何自定义分页视图?(Pagination示例)

发布时间 - 2025-12-12 00:00:00    点击率:
Laravel 自定义分页视图需先执行 php artisan vendor:publish --tag=laravel-pagination 发布默认模板,再通过 $paginator->links('pagination.custom') 指定视图或在 AppServiceProvider 中设 Paginator::defaultView() 全局生效。

在 Laravel 中自定义分页视图,核心是替换默认的 resources/views/vendor/pagination 下的 Blade 模板文件,或通过 links() 方法指定自定义视图名称。

复制默认分页视图到项目中

Laravel 的分页视图默认由框架提供,但允许你覆盖。只需运行以下命令,Laravel 会自动把默认分页模板发布到你的项目里:

php artisan vendor:publish --tag=laravel-pagination

执行后,会在 resources/views/vendor/pagination 目录下生成多个 Blade 文件(如 tailwind.blade.phpbootstrap-5.blade.php 等),你可以任选一个作为基础修改。

使用自定义视图名称渲染分页

在控制器或 Blade 模板中调用分页时,不直接用 $users->links(),而是传入视图路径:

  • {{$users->links('pagination.custom')}} → 对应 resources/views/pagination/custom.blade.php
  • 视图文件中可自由写 HTML + Blade 逻辑,例如用 @if($paginator->onFirstPage()) ... @endif 控制上一页按钮是否禁用
  • 常用变量:$paginator(分页器实例)、$elements(页码数组)、$previousPageUrl$nextPageUrl

编写一个极简自定义分页模板

比如新建 resources/views/pagination/simple.blade.php

  @if ($paginator->onFirstPage())
    上一页
  @else
    previousPageUrl() }}">上一页
  @endif

  @foreach ($elements as $element)
    @if (is_string($element))
      {{ $element }}
    @endif

    @if (is_array($element))
      @foreach ($element as $page => $url)
        @if ($page == $paginator->currentPage())
          {{ $page }}
        @else
          {{ $page }}
        @endif
      @endforeach
    @endif
  @endforeach

  @if ($paginator->hasMorePages())
    nextPageUrl() }}">下一页
  @else
    下一页
  @endif

然后在模板中调用:{{$users->links('pagination.simple')}}

全局设置默认分页视图(可选)

App\Providers\AppServiceProvider@boot() 中添加:

use Illuminate\Pagination\Paginator;

Paginator::defaultView('pagination.simple');
// 或针对特定引擎(如 Bootstrap 5)
Paginator::defaultSimpleView('pagination.simple');

这样所有 $data->links() 都会自动使用该视图,无需每次手动指定。

基本上就这些。改样式靠 HTML/CSS,改逻辑靠 Blade 判断,关键在于理解 $paginator 提供的 API 和渲染流程。


# css  # php  # laravel  # html  # bootstrap  # app  # ai  # win  # if  # 分页  # 自定义  # 上一页  # 下一页  # 你可以  # 多个  # 只需  # 会在  # 可选  # 关键在于 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  在centOS 7安装mysql 5.7的详细教程  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  长沙做网站要多少钱,长沙国安网络怎么样?  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  如何用西部建站助手快速创建专业网站?  做企业网站制作流程,企业网站制作基本流程有哪些?  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  网站建设要注意的标准 促进网站用户好感度!  北京网站制作的公司有哪些,北京白云观官方网站?  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  Laravel如何优化应用性能?(缓存和优化命令)  如何在万网利用已有域名快速建站?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  如何快速建站并高效导出源代码?  如何挑选高效建站主机与优质域名?  敲碗10年!Mac系列传将迎来「触控与联网」双革新  济南网站建设制作公司,室内设计网站一般都有哪些功能?  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  如何在阿里云通过域名搭建网站?  Laravel如何发送系统通知?(Notification渠道示例)  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  如何挑选最适合建站的高性能VPS主机?  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  如何基于PHP生成高效IDC网络公司建站源码?  如何快速上传建站程序避免常见错误?  如何在腾讯云服务器上快速搭建个人网站?  如何确认建站备案号应放置的具体位置?  HTML 中动态设置元素 name 属性的正确语法详解  googleplay官方入口在哪里_Google Play官方商店快速入口指南  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  大学网站设计制作软件有哪些,如何将网站制作成自己app?  如何快速选择适合个人网站的云服务器配置?  昵图网官网入口 昵图网素材平台官方入口  香港网站服务器数量如何影响SEO优化效果?  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  微信小程序 require机制详解及实例代码  教你用AI将一段旋律扩展成一首完整的曲子  再谈Python中的字符串与字符编码(推荐)  如何在 React 中条件性地遍历数组并渲染元素  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  如何做网站制作流程,*游戏网站怎么搭建?  米侠浏览器网页图片不显示怎么办 米侠图片加载修复  Android okhttputils现在进度显示实例代码  Android自定义listview布局实现上拉加载下拉刷新功能  ,南京靠谱的征婚网站?