• 2022-09-04被罚款200元记6分.
  • 特么的.电脑风扇坏了.快递还全部停发.太难了...求求了.疫情赶紧走吧.
  • 难啊难!要钱难!
  • 更新到WordPress5.6啦
  • 有点伤心了,今年净遇到王某海这种人.
  • 难啊难...
  • 七牛的JS SDK 的文档真坑啊.
  • 蓝奏云分享部分地区无法访问需手动修改www.lanzous.com变为:www.lanzoux.com
  • 好气啊~原来使用的CDN服务商莫名其妙的给我服务取消了~
  • 遇见一个沙雕汽车人.

ThinkPHP5默认分页样式修改为Layerui的分页样式

PHP KIENG 4年前 (2019-07-26) 151728次浏览 已收录 1个吐槽 扫描二维码

ThinkPHP5 默认分页样式修改为 Layerui 的分页样式

thinkPHP5 默认的分页样式是 bootstrap 的,到 layerui 里就错版了.

记录一下代码.以备不时之需.

extend新建一个Layui文件夹
然后新建个Layui.php的文件
代码代码如下

<?php

namespace layui;

use think\Paginator;

class Layui extends Paginator {
	protected $uri;
	/**
	 * 上一页按钮
	 * @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(
					'<div class="layui-laypage">%s %s %s %s %s</div>',
					$this->getTotal($this->total),
					$this->getPreviousButton(),
					$this->getLinks(),
					$this->getNextButton(),
					$this->goPage()
				);
			}
		}
	}

	/**
	 * 生成一个可点击的按钮
	 *
	 * @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 layui-disabled" >' . $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);
	}

	/**
	 *  生成总条数
	 * @param $num
	 * @return string
	 */
	protected function getTotal($num) {
		return '<span class="layui-laypage-count">共' . $num . '条</span>';
	}

	/**
	 * 跳转
	 * @return string
	 */
	protected function goPage() {

		$this->getUri();
		return '<span class="layui-laypage-skip">到第<input type="text" min="1" value="1" οnkeydοwn="javascript:if(event.keyCode==13){var page=(this.value>' . $this->lastPage . ')?' . $this->lastPage . ':this.value;location=\'' . $this->uri . 'page=\'+page+\'\'}" class="layui-input" ><button type="button" class="layui-laypage-btn" οnclick="javascript:var page =(this.previousSibling.value > ' . $this->lastPage . ') ? ' . $this->lastPage . ': this.previousSibling.value;location=\'' . $this->uri . 'page=\'+page+\'\'">确定</button></span>';
	}

	/**
	 * 获取 url
	 */
	private function getUri() {
		$url = $_SERVER["REQUEST_URI"] . (strpos($_SERVER["REQUEST_URI"], '?') ? '' : "?");
		$parse = parse_url($url);

		if (isset($parse["query"])) {
			parse_str($parse['query'], $params);
			unset($params["page"]);
			$url = $parse['path'] . '?' . http_build_query($params) . '&';
		} else {
			$url = $parse['path'] . '?';
		}

		$this->uri = $url;

	}
}

然后到config.php
ThinkPHP5 默认分页样式修改为 Layerui 的分页样式

完成样式:

ThinkPHP5 默认分页样式修改为 Layerui 的分页样式


KIENG.CN , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA 4.0协议进行授权
转载请注明出处:ThinkPHP5 默认分页样式修改为 Layerui 的分页样式
本文章链接:https://blog.kieng.cn/1211.html
喜欢 (1)
KIENG
关于作者:
一个热衷网络的Man
发表我的评论
取消评论
表情 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 快速获取昵称
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)个小伙伴在吐槽
  1. 非技术的路过。
    repostone | 中国江苏苏州市 电信2019-07-26 16:02 回复 Windows 8.1 | Chrome 63.0.3239.132