\thinkphp\library\think\paginator\driver

添加 Layui.php

<?php

namespace think\paginator\driver;

use think\Paginator;

class Layui extends Paginator

{

/**

* 上一页按钮

* @param string $text

* @return string

*/

protected function getPreviousButton($text = "上一页")

{

if ($this->currentPage() <= 1) {

return $this->getDisabledTextWrapper($text);

}

$url = $this->url(

$this->currentPage() - 1

);

return $this->getPageLinkWrapper($url, $text);

}

/**

* 下一页按钮

* @param string $text

* @return string

*/

protected function getNextButton($text = '下一页')

{

if (!$this->hasMore) {

return $this->getDisabledTextWrapper($text);

}

$url = $this->url($this->currentPage() + 1);

return $this->getPageLinkWrapper($url, $text);

}

/**

* 页码按钮

* @return string

*/

protected function getLinks()

{

if ($this->simple)

return '';

$block = [

'first' => null,

'slider' => null,

'last' => null

];

$side = 3;

$window = $side * 2;

if ($this->lastPage < $window + 6) {

$block['first'] = $this->getUrlRange(1, $this->lastPage);

} elseif ($this->currentPage <= $window) {

$block['first'] = $this->getUrlRange(1, $window + 2);

$block['last'] = $this->getUrlRange($this->lastPage - 1, $this->lastPage);

} elseif ($this->currentPage > ($this->lastPage - $window)) {

$block['first'] = $this->getUrlRange(1, 2);

$block['last'] = $this->getUrlRange($this->lastPage - ($window + 2), $this->lastPage);

} else {

$block['first'] = $this->getUrlRange(1, 2);

$block['slider'] = $this->getUrlRange($this->currentPage - $side, $this->currentPage + $side);

$block['last'] = $this->getUrlRange($this->lastPage - 1, $this->lastPage);

}

$html = '';

if (is_array($block['first'])) {

$html .= $this->getUrlLinks($block['first']);

}

if (is_array($block['slider'])) {

$html .= $this->getDots();

$html .= $this->getUrlLinks($block['slider']);

}

if (is_array($block['last'])) {

$html .= $this->getDots();

$html .= $this->getUrlLinks($block['last']);

}

return $html;

}

/**

* 渲染分页html

* @return mixed

*/

public function render()

{

if ($this->hasPages()) {

if ($this->simple) {

return sprintf(

'<ul class="pager">%s %s</ul>',

$this->getPreviousButton(),

$this->getNextButton()

);

} else {

return sprintf(

'%s %s %s',

$this->getPreviousButton(),

$this->getLinks(),

$this->getNextButton()

);

}

}

}

/**

* 生成一个可点击的按钮

*

* @param string $url

* @param int $page

* @return string

*/

protected function getAvailablePageWrapper($url, $page)

{

return '<a href="' . htmlentities($url) . '">' . $page . '</a>';

}

/**

* 生成一个禁用的按钮

*

* @param string $text

* @return string

*/

protected function getDisabledTextWrapper($text)

{

return '<a class="layui-laypage-prev" >' . $text . '</a>';

}

/**

* 生成一个激活的按钮

*

* @param string $text

* @return string

*/

protected function getActivePageWrapper($text)

{

return '<span class="layui-laypage-curr"><em class="layui-laypage-em"></em><em>' . $text . '</em></span>';

}

/**

* 生成省略号按钮

*

* @return string

*/

protected function getDots()

{

return $this->getDisabledTextWrapper('...');

}

/**

* 批量生成页码按钮.

*

* @param array $urls

* @return string

*/

protected function getUrlLinks(array $urls)

{

$html = '';

foreach ($urls as $page => $url) {

$html .= $this->getPageLinkWrapper($url, $page);

}

return $html;

}

/**

* 生成普通页码按钮

*

* @param string $url

* @param int $page

* @return string

*/

protected function getPageLinkWrapper($url, $page)

{

if ($page == $this->currentPage()) {

return $this->getActivePageWrapper($page);

}

return $this->getAvailablePageWrapper($url, $page);

}

}

视图

<div class="layui-box layui-laypage layui-laypage-default">{$page}</div>

tp5 设置layui分页的更多相关文章

  1. tp5的 LayUI分页样式实现

    1.先配置你的分页参数: //分页配置 'paginate'      => [ 'type'      => 'Layui', 'var_page'  => 'page', 'li ...

  2. LayUI分页,LayUI动态分页,LayUI laypage分页,LayUI laypage刷新当前页

    LayUI分页,LayUI动态分页,LayUI laypage分页,LayUI laypage刷新当前页 >>>>>>>>>>>> ...

  3. 最易懂的layui分页

    该篇文章是在layui前端框架之分页基础上简洁化和详细化. 首先该示例采用的是Spring+MyBatis Plus+SpringMVC(常规的SSM框架),持久层换成MyBatis也行. 至于lay ...

  4. tp5 使用paginate分页获取数据对象之后 如何对对象进行数据添加

    tp5 使用paginate分页获取数据对象之后 如何对对象进行数据添加 大家都知道,在使用tp5的paginate获取分页数据之后,得到的是一个数据对象,但有时会碰到要对数据对象进行二次加工的情况, ...

  5. springBoot mybatis mysql pagehelper layui 分页

    <!-- 加入 pagehelper 分页插件 jar包--><dependency> <groupId>com.github.pagehelper</gro ...

  6. 设置layui表格cell的内边距

    /*设置layui表格cell的内边距*/ .layui-table-cell { height: 50px !important; line-height: 50px !important; }

  7. TP5之使用layui分页样式

    1.首先你得引入layui文件吧 2.在 application\config.php 中配置,像这样,,, 3.controller中这样写 $data = Db::table($table) -& ...

  8. tp5 集成 layui富文本编辑器

    编辑器地址:http://www.layui.com/doc/modules/layedit.html 一睹芳容 1 去官网:http://www.layui.com/     下载layui ├─c ...

  9. layui分页

    毕业已经两年,期间经历了很多.一个人欢笑与哭泣,在墙角.在路边.在床上.每天搭乘首班车来到公司,每天无数次反省自己,每天每天再问自己为什么活着. 一.下载并引用css和js 地址:点我 <lin ...

随机推荐

  1. Java面试题系列(五)

    序言 基本数据类型数组和引用数据类型数组的区别 基本数据类型数组: 其中存储的元素为基本类型数据. 引用类型数组: 元素是对象,其中存储的是对象的地址值. 引用数据类型的数组使用规定长度的方式进行初始 ...

  2. ubuntu没有/usr/include/sys目录

    实际上不是没有sys目录,只是系统给换路径了 32位系统:/usr/incude/i386-linux-gnu/sys 64位系统:/usr/include/x86_64-linux-gnu/sys/ ...

  3. CoreText实现图文混排

    CoreText的介绍 Core Text 是基于 iOS 3.2+ 和 OSX 10.5+ 的一种能够对文本格式和文本布局进行精细控制的文本引擎.它良好的结合了 UIKit 和 Core Graph ...

  4. Sqlserver 连接oracle和mysql数据库 已经oracle导入sqlserver表数据

    SQL Server2012创建连接服务器到ORACLE11G 8,百思考不知道原因啊??突然我发现如下:链接服务器—〉访问接口—〉OraOLEDB.Oracle—〉允许进程内没有勾上,但是我想上面的 ...

  5. Linux 下磁盘挂载

    Linux 磁盘挂载 新硬盘挂载: fdisk /dev/sdb p # 打印分区 d # 删除分区 n # 创建分区,(一块硬盘最多4个主分区,扩展占一个主分区位置.p主分区 e扩展) w # 保存 ...

  6. Debian Security Advisory(Debian安全报告) DSA-4416-1 wireshark security update

    Debian Security Advisory(Debian安全报告) DSA-4416-1 wireshark security update Package:wireshark CVE ID : ...

  7. mysql 文件操作 表

    一 :  访问库  use db1 查询当前表所在文件夹 :  select database(); 增:   create table t1(id int, name chat(10)); 查询:  ...

  8. GDI+学习---1.初识GDI+

    ---恢复内容开始--- GDI+: GDI+由一组C++类实现,是对于GDI的继承,GDI+不仅优化了大部分GDI性能而且提供了更多特性.允许应用程序开发者将信息显示在显示器或者打印机上,而无需考虑 ...

  9. 比较python类的两个instance(对象) 是否相等

    http://www.yihaomen.com/article/python/281.htm 比较python类的两个instance(对象) 是否相等 作者:轻舞肥羊 日期:2012-10-25 字 ...

  10. 关于java11 - 应该知道的

    Local Variable Type Inference# HTTP Client# Collections# Streams# Optionals# Strings# InputStreams# ...