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

news2025/1/11 0:26:09

博主用的是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.coloradmin.cn/o/1656866.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java实战:验证改进的哥德巴赫猜想

改进的哥德巴赫猜想&#xff08;Improved Goldbach’s Conjecture&#xff09;声称每个大于5的奇数都可以表示为三个素数之和。这个猜想是对原始哥德巴赫猜想的扩展&#xff0c;针对奇数的情况。原始哥德巴赫猜想是指每个大于2的偶数都可以表示为两个素数之和。尽管改进的哥德巴…

ROS 2边学边练(45)-- 构建一个能动的机器人模型

前言 在上篇中我们搭建了一个机器人模型(其由各个关节&#xff08;joint&#xff09;和连杆&#xff08;link&#xff09;组成)&#xff0c;此篇我们会通过设置关节类型来实现机器人的活动。 在ROS中&#xff0c;关节一般有无限旋转&#xff08;continuous&#xff09;,有限旋转…

el-dialog设置el-head固定

0 效果 1 代码 ::v-deep .adTextDetailDialogClass .el-dialog__body{max-height: calc(100vh - 150px);overflow: auto;border-top:1px solid #dfdfdf;border-bottom:1px solid #dfdfdf; } ::v-deep .adTextDetailDialogClass .el-dialog{position: fixed;height:fit-content;…

15-LINUX--线程的创建与同步

一.线程 1.线程的概念 线程是进程内部的一条执行序列或执行路径&#xff0c;一个进程可以包含多条线程。 2.线程的三种实现方式 ◼ 内核级线程&#xff1a;由内核创建&#xff0c;创建开销大&#xff0c;内核能感知到线程的存在 ◼ 用户级线程&#xff1a;线程的创建有用户空…

springboot 引入第三方bean

如何进行第三方bean的定义 参数进行自动装配

数据库中索引的底层原理和SQL优化

文章目录 关于索引B 树的特点MySQL 为什么使用 B 树&#xff1f; 索引分类聚簇索引 和 非聚簇索引覆盖索引索引的最左匹配原则索引与NULL索引的代价大表结构修改 SQL优化EXPLAIN命令选择索引列其它细节 关于索引 索引是一种用来加快查找效率的数据结构&#xff0c;可以简单粗暴…

探索黏土特效?推荐这三款软件!

在数字化时代&#xff0c;我们拥有无数的工具来释放我们的创造力和想象力。其中&#xff0c;黏土特效软件就是一种能够将你的照片或图像转化为可爱、生动的黏土动画的工具。这些软件以其独特的视觉效果和易于使用的特性&#xff0c;吸引了大量的用户。下面&#xff0c;我们将为…

gorm-sharding分表插件升级版

代码地址&#xff1a; GitHub - 137/gorm-sharding: Sharding 是一个高性能的 Gorm 分表中间件。它基于 Conn 层做 SQL 拦截、AST 解析、分表路由、自增主键填充&#xff0c;带来的额外开销极小。对开发者友好、透明&#xff0c;使用上与普通 SQL、Gorm 查询无差别.解决了原生s…

FreeRTOS学习 -- 任务相关API函数

一、任务创建和删除API函数 FreeRTOS 最基本的功能就是任务管理&#xff0c;而任务管理最基本的操作就是创建和删除任务。 FreeRTOS的任务创建和删除API函数如下&#xff1a; 1、函数 xTaskCreate() 此函数用来创建一个任务&#xff0c;任务需要 RAM 来保存于任务有关的状…

nginx的应用部署nginx

这里写目录标题 nginxnginx的优点什么是集群常见的集群什么是正向代理、反向代理、透明代理常见的代理技术正向代理反向代理透明代理 nginx部署 nginx nginx&#xff08;发音同enginex&#xff09;是一款轻量级的Web服务器/反向代理服务器及电子邮件&#xff08;IMAP/POP3&…

每日一题 第九十七期 洛谷 [NOIP2000 提高组] 方格取数

[NOIP2000 提高组] 方格取数 题目背景 NOIP 2000 提高组 T4 题目描述 设有 N N N \times N NN 的方格图 ( N ≤ 9 ) (N \le 9) (N≤9)&#xff0c;我们将其中的某些方格中填入正整数&#xff0c;而其他的方格中则放入数字 0 0 0。如下图所示&#xff08;见样例&#xf…

同步电机原理解析

同步电机 同步带年纪&#xff0c;顾名思义无论负载如何&#xff0c;都能以恒定的速度运转&#xff0c;它以高效率著称 这种恒速特性是通过恒定磁场和旋转磁场的相互作用实现的&#xff0c;与其他电机一样&#xff0c;同步电机由定子和转子组成&#xff0c;定子铁芯由硅片层叠而…

STC8增强型单片机开发 【GPIO的理解⭐⭐】

目录 一、引言 二、GPIO概述 三、GPIO的功能 1. 输入功能&#xff1a; 2. 输出功能 四、GPIO的配置方法 1. 选择GPIO端口和引脚&#xff1a; 2. 设置GPIO模式&#xff1a; 3. 配置GPIO参数&#xff1a; 五、GPIO应用实例 1. 硬件连接&#xff1a; 2. 编程实现&…

2.1初识Spark

Spark于2009年诞生&#xff0c;最初是加州大学伯克利分校的研究项目。2013年加入Apache孵化器项目&#xff0c;2014年成为Apache顶级项目。Spark以内存内运算技术为核心&#xff0c;包含多个计算框架&#xff0c;成为大数据计算领域的后起之秀&#xff0c;打破了Hadoop的基准排…

2.外卖点餐系统(Java项目 springboot)

目录 0.系统的受众说明 1.系统功能设计 2.系统结构设计 3.数据库设计 3.1实体ER图 3.2数据表 4.系统实现 4.1用户功能模块 4.2管理员功能模块 4.3商家功能模块 4.4用户前台功能模块 4.5骑手功能模块 5.相关说明 新鲜运行起来的项目&#xff1a;如需要源码数据库…

如何防止源代码泄露?彻底解决源代码防泄密的方法

SDC沙盒系统&#xff1a;数据安全的守护者 SDC沙盒系统&#xff0c;为研发型企业设计&#xff0c;实现了对数据的代码级保护&#xff0c;同时不影响工作效率和正常使用。系统通过自动加密敏感数据&#xff0c;并配合多种管控机制&#xff0c;有效防止了数据的泄露。 涉密可信…

Python专题:五、条件语句

流程控制语句 count&#xff08;&#xff09;字符串计数 句尾\分行写码 运行输入cmd 输入Python 回车进入shell python 解释器 shell模式 再给x1,没有结果出来 if条件语句关键词&#xff0c;x>5条件表达式&#xff0c;&#xff1a;条件结束&#xff0c;四个空格&#x…

压缩机继电器EOCRDS-30NY7Q升级后型号:EOCRDS3-30S

EOCR-DS3系列型号&#xff1a; EOCRDS3-05S EOCRDS-05S EOCRDS1-05S EOCRDS3-30S EOCRDS-30S EOCRDS1-30S EOCRDS3-60S EOCRDS-60S EOCRDS1-60S EOCRDS3-05W EOCRDS-05W EOCRDS1-05W EOCRDS3-30W EOCRDS-30W EOCRDS1-30W EOCRDS3-60W EOCRDS-60W EOCRDS1-60W EOCR-DS3T-…

Java:就业市场上的常青树-永远的宠儿

除了兴趣&#xff0c;我们学习编程最主要的目标是找一份好工作&#xff0c;选择合适的编程语言就非常重要了&#xff0c;毕竟选择大于努力&#xff0c;男怕选错行&#xff0c;学编程最怕选错语言。比如&#xff0c;如果你选Perl&#xff0c;那就糟糕了&#xff0c;基本上可以断…

「网络流 24 题」试题库 【最大流】

「网络流 24 题」试题库 思路 建立超级源点 S S S 和超级汇点 T T T&#xff0c;将每一类题目拆分为入点 i n in in 和出点 o u t out out&#xff0c;连边 i n → o u t in \rarr out in→out&#xff0c;边权为 k i k_i ki​&#xff0c;也就是所需的题目数量&#xf…