博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
thinkphp5.0 ajax分页
阅读量:5225 次
发布时间:2019-06-14

本文共 4177 字,大约阅读时间需要 13 分钟。

放到    ***thinkphp\library\think\paginator\driver\Ajaxbootstrap.php

分页的type参数为ajaxbootstrap

<?php

// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: zhangyajun <448901948@qq.com>
// +----------------------------------------------------------------------

namespace think\paginator\driver;

use think\Paginator;

class Ajaxbootstrap extends Paginator

{

/**

* 上一页按钮
* @param string $text
* @return string
*/
protected function getPreviousButton($text = "&laquo;")
{

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

return $this->getDisabledTextWrapper($text);
}

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

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

}

/**

* 下一页按钮
* @param string $text
* @return string
*/
protected function getNextButton($text = '&raquo;')
{
if (!$this->hasMore) {
return $this->getDisabledTextWrapper($text);
}

$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(
'<ul class="pagination">%s %s %s</ul>',
$this->getPreviousButton(),
$this->getLinks(),
$this->getNextButton()
);
}
}
}

/**

* 生成一个可点击的按钮
*
* @param string $url
* @param int $page
* @return string
*/
protected function getAvailablePageWrapper($url, $page)
{
preg_match('/^(?:.*)&page=(\d)(?:.*)?$/',$url,$b);
if(!empty($b)){
$url=$b[1];
}
return '<li><a href="javascript:;" οnclick=ajaxpage('.$url.')>' . $page . '</a></li>';
}

/**

* 生成一个禁用的按钮
*
* @param string $text
* @return string
*/
protected function getDisabledTextWrapper($text)
{
return '<li class="disabled"><span>' . $text . '</span></li>';
}

/**

* 生成一个激活的按钮
*
* @param string $text
* @return string
*/
protected function getActivePageWrapper($text)
{
return '<li class="active"><span>' . $text . '</span></li>';
}

/**

* 生成省略号按钮
*
* @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);

}
}

转载于:https://www.cnblogs.com/chengfengchi/p/10333897.html

你可能感兴趣的文章
网络请求返回HTTP状态码(404,400,500)
查看>>
Spring的JdbcTemplate、NamedParameterJdbcTemplate、SimpleJdbcTemplate
查看>>
Mac下使用crontab来实现定时任务
查看>>
303. Range Sum Query - Immutable
查看>>
图片加载失败显示默认图片占位符
查看>>
【★】浅谈计算机与随机数
查看>>
《代码阅读方法与实现》阅读笔记一
查看>>
解决 sublime text3 运行python文件无法input的问题
查看>>
javascript面相对象编程,封装与继承
查看>>
Atlas命名空间Sys.Data下控件介绍——DataColumn,DataRow和DataTable
查看>>
Java中正则表达式的使用
查看>>
算法之搜索篇
查看>>
新的开始
查看>>
java Facade模式
查看>>
NYOJ 120校园网络(有向图的强连通分量)(Kosaraju算法)
查看>>
SpringAop与AspectJ
查看>>
Leetcode 226: Invert Binary Tree
查看>>
http站点转https站点教程
查看>>
解决miner.start() 返回null
查看>>
关于MFC中窗口的销毁
查看>>