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的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  Laravel如何记录自定义日志?(Log频道配置)  Android自定义控件实现温度旋转按钮效果  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  如何在Windows服务器上快速搭建网站?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  网站制作价目表怎么做,珍爱网婚介费用多少?  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  bootstrap日历插件datetimepicker使用方法  Laravel安装步骤详细教程_Laravel环境搭建指南  C++用Dijkstra(迪杰斯特拉)算法求最短路径  深圳网站制作的公司有哪些,dido官方网站?  Laravel如何实现用户密码重置功能?(完整流程代码)  Laravel如何自定义分页视图?(Pagination示例)  Laravel怎么调用外部API_Laravel Http Client客户端使用  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  北京网站制作的公司有哪些,北京白云观官方网站?  如何在腾讯云服务器快速搭建个人网站?  javascript日期怎么处理_如何格式化输出  高防服务器租用指南:配置选择与快速部署攻略  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  如何快速查询网站的真实建站时间?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  使用C语言编写圣诞表白程序  Laravel怎么实现模型属性的自动加密  python中快速进行多个字符替换的方法小结  PythonWeb开发入门教程_Flask快速构建Web应用  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  Laravel如何实现API版本控制_Laravel版本化API设计方案  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  如何在 React 中条件性地遍历数组并渲染元素  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  Bootstrap整体框架之JavaScript插件架构  iOS UIView常见属性方法小结  网站建设保证美观性,需要考虑的几点问题!  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  Laravel Docker环境搭建教程_Laravel Sail使用指南  活动邀请函制作网站有哪些,活动邀请函文案?