thinkphp6使用layui分页组件做分页效果

embedded/2024/9/20 1:18:37/ 标签: layui, 前端, javascript, php, thinkphp, thinkphp6

博主用的是layui2.9.8的版本,但这个版本的分页组件是动态效果的,但我需要的是静态分页,所以我自己封装了一个生成layui的分页代码生成代码。代码如下:

1、先创建文件,路径是extent/layui/LayuiPage.php,加入下面代码,样式代码可以根据自己使用的layui版本自己修改

<?php
declare (strict_types = 1);namespace layui;class LayuiPage
{/*** @description:指定分类列表* @param: $total数据总数* @Author: wangze* @Date 2024/4/25*/public function page($total){$pagination = [];$page = getPage();//当前页$limit = getLimit();//每页数量//计算总页数$totalPages = (int)ceil($total / $limit);//页面数小于等于1,不显示分页if($totalPages <= 1)return '';// 如果总页数小于等于10,直接显示所有页码if ($totalPages <= 10) {for ($i = 1; $i <= $totalPages; $i++) {$pagination[] = $i;}}// 否则根据当前页数选择合适的显示方式else {// 根据当前页数确定 '...' 的位置if ($page <= 6) {for ($i = 1;$i <= 7; $i++) {$pagination[] = $i;}$pagination[] = '...';$pagination[] = $totalPages;} elseif ($page >= $totalPages - 5) {$pagination[] = 1;$pagination[] ='...';for ($i = $totalPages - 6; $i <= $totalPages; $i++) {$pagination[] = $i;}} else {$pagination[] = 1;$pagination[] = '...';for ($i = $page -2; $i <= $page + 2; $i++) {$pagination[] = $i;}$pagination[] = '...';$pagination[] = $totalPages;}}$last_page = $page - 1 <= 0 ? 0 : $page - 1;//上一页$next_page = $page + 1 <= $total ? $page + 1 : null;//下一页$html = '<div class="layui-box layui-laypage layui-laypage-molv" id="layui-laypage-18">';if($last_page <= 0){$html .= '<a class="layui-laypage-prev layui-disabled" data-page="' . $last_page . '">上一页</a>';}else{$html .= '<a href="' . $this->handleParam($last_page) . '" class="layui-laypage-prev" data-page="' . $last_page . '">上一页</a>';}foreach ($pagination as $v){if($v == $page){$html .= '<span class="layui-laypage-curr"><em class="layui-laypage-em" style="background-color:#1E9FFF;"></em><em>' . $v . '</em></span>';}else if($v == '...'){$html .= '<span class="layui-laypage-spr">...</span>';}else{$html .= '<a href="' . $this->handleParam($v) . '" data-page="' . $v . '">' . $v . '</a>';}}if($next_page > $totalPages){$html .= '<a class="layui-laypage-next layui-disabled" data-page="' . $next_page . '">下一页</a>';}else{$html .= '<a href="' . $this->handleParam($next_page) . '" class="layui-laypage-next" data-page="' . $next_page . '">下一页</a>';}$html = '</div>';return $html;}/*** @description: 分页参数处理* @param: {$page:分页数}* @Author: wangze* @Date 2024/5/6*/protected function handleParam($page){$param = request()->param();$get = [];foreach($param as $k=>$v){$get[$k] = $v;}$get['page'] = $page;$gets = '';foreach($get as $gk=>$gv){if(empty($gets)){$gets .= '?' . $gk . '=' . $gv;}else{$gets .= '&' . $gk . '=' . $gv;}}return $gets;}
}

2、注意:其中有2个方法,由于我多个接口会需要获取分页数和分页数量,所以在app/common.php文件中进行封装,可以根据自己的需求封装或者直接外部引入分页参数也可以。

$page = getPage();//当前页
$limit = getLimit();//每页数量

这2个方法是写在app/common.php文件中的,代码如下

/*** @description: 获取当前分页数*/
function getPage(){$page = input('page');if(empty($page) || $page <= 0)$page = 1;$page = (int)$page;return $page;
}/*** @description: 获取当前分页数量*/
function getLimit(){$limit = input('limit');if(empty($limit) || $limit <= 0)$limit = 20;$limit = (int)$limit;return $limit;
}

3、引用方法,下面是因为我又在common.php中封装了公共方法,可根据使用自行去封装

function layuiPage($total) {$ext = new \layui\LayuiPage();$res = $ext->page($total);return $res;
}

效果如下:
在这里插入图片描述


http://www.ppmy.cn/embedded/40773.html

相关文章

LVS 集群

一、集群和分布式 系统性能扩展方式&#xff1a; Scale UP&#xff1a;垂直扩展&#xff0c;向上扩展,增强&#xff0c;性能更强的计算机运行同样的服务 Scale Out&#xff1a;水平扩展&#xff0c;向外扩展,增加设备&#xff0c;并行地运行多个服务调度分配问题&#xff0c;…

攻防演练-防守单位常见防守策略

为方便您的阅读&#xff0c;可点击下方蓝色字体&#xff0c;进行跳转↓↓↓ 01 防守单位常见防守策略 01 防守单位常见防守策略 为普及网络安全知识&#xff0c;提高网络安全防范意识&#xff0c;和网络安全工作技能。我们将向大家介绍网络安全攻防演练中防守单位的一些关键策…

[嵌入式系统-77]:RT-Thread-快速上手:嵌入式系统调测工具大全

目录 1. JTAG 下载调试器&#xff1a; 2. J-Link 仿真器&#xff1a; 3. ICE&#xff08;In-Circuit Emulator&#xff09;&#xff1a; 4. ROM监视器&#xff08;ROM Monitor&#xff09;&#xff1a; 5. 终端仿真工具&#xff1a; 6. 总线抓取工具&#xff1a; 7. 静态…

攻防世界-web-unseping

题目 知识点 PHP代码审计PHP序列化和反序列化PHP中魔术方法命令执行绕过方式 解读源码 <?php highlight_file(__FILE__);class ease{private $method;private $args;function __construct($method, $args) {$this->method $method;$this->args $args;}function …

DS:顺序表、单链表的相关OJ题训练(2)

欢迎各位来到 Harper.Lee 的学习世界&#xff01; 博主主页传送门&#xff1a;Harper.Lee的博客主页 想要一起进步的uu欢迎来后台找我哦&#xff01; 一、力扣--141. 环形链表 题目描述&#xff1a;给你一个链表的头节点 head &#xff0c;判断链表中是否有环。如果链表中有某个…

【GoLang基础】select语句是什么?

问题引出&#xff1a; Go语言中的select语句是什么&#xff1f; 解答&#xff1a; select 语句是 Go 语言中用于处理多个通道操作的选择器。它可以同时等待多个通道的操作&#xff0c;并在其中任意一个操作准备就绪时执行对应的代码块。select 语句通常用于实现非阻塞的通信和…

服务器端优化-Redis内存划分和内存配置

6、服务器端优化-Redis内存划分和内存配置 当Redis内存不足时&#xff0c;可能导致Key频繁被删除、响应时间变长、QPS不稳定等问题。当内存使用率达到90%以上时就需要我们警惕&#xff0c;并快速定位到内存占用的原因。 有关碎片问题分析 Redis底层分配并不是这个key有多大&…

二维数组:行列互换/求最大值及其所在位置/求各行各列的和/矩阵乘积/深入理解二维数组

二维数组 1.定义 只有行号可以省略&#xff0c;初始化 全部初始化/部分初始化/不初始化 2.元素引用 3.存储形式 :顺序存储 按行存储 4.深入理解二维数组 #include<stdio.h> #include<stdlib.h>#define M 2 #define N 3int mian() {int a[M][N] {{1,2,3},{4,5,6}}…

[ 视频号]代替用户发布视频api

使用接口&#xff0c;替代用户使用设备直接发布视频api 接口地址&#xff1a; http://接口地址/api/v2 先调用登录接口&#xff0c;进行账号登录 登录二维码接口入参&#xff1a; {"appId": "","proxyIp": "","regionId"…

【计算机毕业设计】基于SSM++jsp的蜀都天香酒楼网站【源码+lw+部署文档+讲解】

目录 摘要 Abstract 目 录 1绪论 1.1研究背景与意义 1.2国内外研究现状 1.3研究内容 1.4论文结构 2相关技术介绍 2.1 B/S模式 2.2 MyEclipse开发环境 2.3 MySQL数据库 2.4 Java语言 2.5 JSP技术 2.6 Tomcat服务器 3系统分析 3.1需求分析 3.2可行性分析 3.2.1经济可行性 3.2.2技…

Linux 第二十四章

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

自定义类型——结构体、枚举和联合

自定义类型——结构体、枚举和联合 结构体结构体的声明匿名结构体结构体的自引用结构体的初始化结构体的内存对齐修改默认对齐数结构体传参 位段枚举联合 结构体 结构是一些值的集合&#xff0c;这些值被称为成员变量&#xff0c;结构的每个成员可以是不同类型的变量。 数组是…

文心一言指令:引领语言模型的创新之路

文心一言指令&#xff1a;引领语言模型的创新之路 引言 在人工智能领域&#xff0c;尤其是自然语言处理&#xff08;NLP&#xff09;的世界中&#xff0c;语言模型的发展一直是科技进步和创新的前沿。随着深度学习技术的突破&#xff0c;一系列强大的语言模型如雨后春笋般涌现…

Flutter 中的 Row 小部件:全面指南

Flutter 中的 Row 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;Row 是一个水平布局的小部件&#xff0c;用于将子控件沿着水平轴排列。Row 类似于 HTML 中的 div 标签&#xff0c;但仅限于水平布局。它非常适合用来创建行式布局&#xff0c;如表单输入、按钮组、标签…

修改mysql locahost或者127.0.0.1弱密码问题

一、登录有问题的数据库 sudo mysql -uroot -pxxx -hkde-offline1 -P13306 二、查询user表 这将显示与 root 用户关联的主机、用户名以及加密后的认证字符串(密码)。请注意,authentication_string 列中存储的是经过哈希加密后的密码,而不是原始密码。 MySQL [mysql…

【SpringBoot】Spring Boot项目的监控

目录 未来的开发场景Spring Boot Actuator代码示例1.引入依赖2.启动程序3.修改配置文件&#xff0c;添加开放的端点4.启动程序 Endpoints 介绍Actuator 提供的所有 endpoint Spring Boot Admin主要的功能点代码示例1.添加依赖2.启动类添加注解3.启动程序 将监控到的数据传输到A…

linux开发笔记(buildroot 增加自己的开发板支持文件)

1、该笔记参考了mangopi r3的buildroot。某宝上卖的LC-PI-200S提供的buildroot就是这个。已经上传到我的资源中&#xff0c;可以下载看看。 2、首先在buildroot目录输入make menuconfig打开buildroot配置。 进入build options查看 可以看到第二行就是buildroot配置的保存位置…

【OpenHarmony 实战开发】 做一个 loading加载动画

本篇文章介绍了如何实现一个简单的 loading 加载动画&#xff0c;并且在文末提供了一个 demo 工程供读者下载学习。作为一个 OpenHarmony 南向开发者&#xff0c;接触北向应用开发并不多。北向开发 ArkUI 老是改来改去&#xff0c;对笔者这样的入门选手来说学习成本其实非常大&…

Spring-依赖查找

依赖查找 根据名称进行查找 实时查找 BeanFactory beanFactory new ClassPathXmlApplicationContext("beans.xml"); Object bean beanFactory.getBean("personHolder"); System.out.println(bean);xml如下: <bean id"person" class&qu…

【教程向】从零开始创建浏览器插件(六)实战篇

【教程向】从零开始创建浏览器插件(六)实战篇 在这篇文章中,我们将详细介绍一个名为“摸鱼King”的Chrome扩展程序的开发思路。这个扩展程序的主要功能是在用户浏览网页时提供便捷的方式来摸鱼看小说。 完整的工程我放在了完整工程,可以下载下来自己试一试。 1. 主要功能…