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

博主用的是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;
}

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/607284.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HashMap前世今生

概述 HashMap是我们常用的一种数据结构&#xff0c;他是一个key-value结构。我们来深入了解一下。 1.8之前用的数组加链表 1.8之后用的数组加链表加红黑树&#xff0c;当链表数量大于8时&#xff0c;将链表转为红黑树。当红黑书节点小于6又会转为链表。 浅析HashMap的put()方…

达梦数据库限制用户登录IP测试

达梦数据库创建用户时可以限制登录ip和时间段。 创建测试测试用户 create user test1 identified by Test_1234 ALLOW_IP "192.168.100.101"; 限定该用户只能通过192.168.100.101地址登录数据库 连接测试 上图可见&#xff0c;192.168.100.101客户端可以连接上19…

纯血鸿蒙APP实战开发——Grid和List内拖拽交换子组件位置

Grid和List内拖拽交换子组件位置 介绍 本示例分别通过onItemDrop()和onDrop()回调&#xff0c;实现子组件在Grid和List中的子组件位置交换。 效果图预览 使用说明&#xff1a; 拖拽Grid中子组件&#xff0c;到目标Grid子组件位置&#xff0c;进行两者位置互换。拖拽List中子…

搭建产品帮助体系指南干货在这里

产品的成功不仅需要它的功能强大&#xff0c;还要让用户对产品有一个良好的体验。一个完善全面的产品帮助体系&#xff0c;能够很大程度地提升用户体验&#xff0c;帮助用户更好地理解和使用产品。如何搭建一个高效、实用的产品帮助体系呢&#xff1f;下面&#xff0c;我将为你…

Tomcat安装与配置(详细教程)

一、安装Tomcat服务器 1.下载地址&#xff08;Tomcat官网&#xff09;http://tomcat.apache.org/ 2.将下载的zip文件解压到指定的目录&#xff08;例如&#xff1a;D盘&#xff0c;目录不要有中文&#xff09; D:\apache-tomcat-9.0.43 二、配置Tomcat环境变量 &#xff08;…

鸿蒙UI复用

鸿蒙UI复用 简介BuilderBuilder的使用方式一Builder的使用方式二Builder的使用方式三 Component使用Component复用UI 简介 在页面开发过程中&#xff0c;会遇到有UI相似的结构&#xff0c;如果每个UI都单独声明一份&#xff0c;会产生大量冗余代码&#xff0c;不利于阅读。遇到…

ai可以做思维导图吗?当然是可以的!

ai可以做思维导图吗&#xff1f;在快节奏的现代生活中&#xff0c;思维导图作为一种高效的信息组织和表达工具&#xff0c;越来越受到人们的青睐。随着人工智能&#xff08;AI&#xff09;技术的不断发展&#xff0c;AI思维导图软件也应运而生&#xff0c;它们不仅能够帮助用户…

软件接口测试规范流程

1、需求分析 1.1 确认测试目的和测试对象&#xff1a; 了解需求并明确测试目的&#xff0c;如测试一个本地 API 还是跨网站的远程 API。 1.2 确认测试的基本条件: 确定测试所需的测试数据&#xff0c;测试环境以及测试团队中的角色和职责。 1.3. 对接口文档进行验证&#xf…

兄弟DCP-7057激光打印机报错误代码EC检修及分析

故障描述&#xff1a; 兄弟DCP-7057激光打印机屏幕显示无法打印EC关闭电源&#xff0c;然后重新打开打印机。 故障检修及分析&#xff1a; 1、定影单元风扇的插线连接不良 检查定影单元风扇的插线连接并重新连接&#xff1b; 2、定影单元风扇故障 更换定影单元风扇&#xff1b…

Segmentation fault (core dumped)排查

先泼盆冷水&#xff0c;这个问题比较棘手&#xff0c;有的能通过重装opencv相关包修复&#xff0c;有的可能还是直接换一个没问题的环境比较快…… 我最后是没有解决的&#xff0c;折腾了几个小时后&#xff0c;还是听同事的话&#xff0c;把docker镜像重启了&#xff0c;幸好…

day04—java基础之方法详解

方法概述 方法是具有特定功能的代码集合&#xff0c;由于我们是把重复的代码写到方法当中&#xff0c;以后要用直接调用方法即可&#xff0c;不需要再写一遍了。代码相当于只写了一遍。所以可以提高代码的复用性。如果要修改代码&#xff0c;我们也只要修改一处即可&#xff0…

JavaSwing技术实现一个电子表程序

使用JavaSwing技术实现一个简单的电子表盘&#xff0c;如下所示。 下载链接 有兴趣的读者可以点击链接下载&#xff0c;博主承诺绝对真实有效。

bert-NER 转化成 onnx 模型

保存模型 加载模型 from transformers import AutoTokenizer, AutoModel, AutoConfigNER_MODEL_PATH ./save_model ner_tokenizer AutoTokenizer.from_pretrained(NER_MODEL_PATH) ner_config AutoConfig.from_pretrained(NER_MODEL_PATH) ner_model AutoModelForTokenCl…

VIsualGDB : 快速入门系列

《VisualGDB &#xff1a; 解决编码导致的编译错误》 《VisualGDB &#xff1a; 在windows上开发和调试Linux代码&#xff08;一&#xff09;》 《VisualGDB&#xff1a;为Linux项目添加系统依赖库》 《VisualGDB&#xff1a;Linux动态库项目创建、编译及库的使用》 《VisualGD…

Web3空投入门:如何增加空投成功的几率

今天分享空投如何避免限制以提高效率&#xff0c;增加成功几率&#xff0c;首先我们来了解什么是空投加密&#xff0c;有哪些空投类型。 一、什么是空投加密&#xff1f; 加密货币空投是一种营销策略&#xff0c;包括向用户的钱包地址发送免费的硬币或代币。 加密货币项目使用…

Linux网络编程(三)IO复用三 epoll系统调用

三、epoll系统调用 epoll是Linux特有的I/O复用函数。它在实现和使用上与select、poll有很大差异。 epoll使用一组函数来完成任务&#xff0c;而不是单个函数epoll把用户关心的文件描述符上的事件放在内核里的一个事件表中&#xff0c;从而无须像select和poll那样每次调用都要…

Python从0到POC编写--实用小脚本

UrlCheck&#xff1a; 假设我们要对一份 url 列表进行访问是不是 200 &#xff0c; 量多的话肯定不能一个一个去点开看&#xff0c; 这个时候我们可以借助脚本去判断&#xff0c; 假如有一份这样的列表&#xff0c; 这份列表呢&#xff0c;奇奇怪怪&#xff0c;有些写错了…

Golang——Strconv包

func ParseBool(str string) (value bool, err error) strconv包实现了基本数据类型与其字符串表示的转换&#xff0c;主要有以下常用函数&#xff1a;Atoi()&#xff0c;Itoa()&#xff0c;parse系列函数&#xff0c;format系列函数&#xff0c;append系列函数。 1.1 string与…

6份不用辞职就能赚钱的副业,上班族必看!

在这个经济浪潮中&#xff0c;生活成本的上升与工资增长的缓慢形成了鲜明对比。对于许多上班族来说&#xff0c;寻找额外收入的途径显得尤为迫切。 今天&#xff0c;就让我们一起探索那些适合在业余时间开展的副业&#xff0c;为你的财务自由之路添砖加瓦。 1. 闲鱼二手手机售卖…

SEO之高级搜索指令(三)

初创企业需要建站的朋友看这篇文章&#xff0c;谢谢支持&#xff1a; 我给不会敲代码又想搭建网站的人建议 新手上云 &#xff08;接上一篇。。。。&#xff09; 11、link: link:也是SEO 常用的指令&#xff0c;用来搜索某个url的反向链接&#xff0c;既包括内部链接&#xf…