yii2分页之实现跳转到具体某页的实例代码


Posted in PHP onJune 02, 2016

先上图看效果,大家感觉还错请参考功能怎么实现的!

yii2分页之实现跳转到具体某页的实例代码

从上图中不难看出,我们制定跳转到某页的功能是基于linkpager之上的扩展,这根我们之前实现的分页扩展明显不同,之前的明显就是重写了!当然,这都不重要,我们看看GoLinkPager的具体实现!名字起的有点lower,不重要!

1、在frontend\components目录新建GoLinkPager类文件

2、该类继承yii\widgets\LinkPager;,如下:

namespace frontend\components; 
use yii\widgets\LinkPager; 
use yii\helpers\Html; 
class GoLinkPager extends LinkPager 
{ 
}

3、添加属性public $go = false; //是否包含跳转功能跳转 默认false

4、重写父类linkPager的renderPageButtons方法,具体直接参考下面完整版代码,可主要看go部分的代码实现。

<?php
namespace frontend\components;
use yii\widgets\LinkPager;
use yii\helpers\Html;
class GoLinkPager extends LinkPager
{
 // 是否包含跳转功能跳转 默认false
 public $go = false;
 protected function renderPageButtons()
 {
  $pageCount = $this->pagination->getPageCount();
  if ($pageCount < 2 && $this->hideOnSinglePage) {
   return '';
  }
  $buttons = [];
  $currentPage = $this->pagination->getPage();
  // first page
  $firstPageLabel = $this->firstPageLabel === true ? '1' : $this->firstPageLabel;
  if ($firstPageLabel !== false) {
   $buttons[] = $this->renderPageButton($firstPageLabel, 0, $this->firstPageCssClass, $currentPage <= 0, false);
  }
  // prev page
  if ($this->prevPageLabel !== false) {
   if (($page = $currentPage - 1) < 0) {
    $page = 0;
   }
   $buttons[] = $this->renderPageButton($this->prevPageLabel, $page, $this->prevPageCssClass, $currentPage <= 0, false);
  }
  // internal pages
  list($beginPage, $endPage) = $this->getPageRange();
  for ($i = $beginPage; $i <= $endPage; ++$i) {
   $buttons[] = $this->renderPageButton($i + 1, $i, null, false, $i == $currentPage);
  }
  // next page
  if ($this->nextPageLabel !== false) {
   if (($page = $currentPage + 1) >= $pageCount - 1) {
    $page = $pageCount - 1;
   }
   $buttons[] = $this->renderPageButton($this->nextPageLabel, $page, $this->nextPageCssClass, $currentPage >= $pageCount - 1, false);
  }
  // last page
  $lastPageLabel = $this->lastPageLabel === true ? $pageCount : $this->lastPageLabel;
  if ($lastPageLabel !== false) {
   $buttons[] = $this->renderPageButton($lastPageLabel, $pageCount - 1, $this->lastPageCssClass, $currentPage >= $pageCount - 1, false);
  }
  // go
  if ($this->go) {
   $goPage = $currentPage + 2;
   $goHtml = <<<goHtml
    <div class="form" style="float: left; color: #999; margin-left: 10px; font-size: 12px;">
     <span class="text">共 {$pageCount} 页</span>
     <span class="text">到第</span>
     <input class="input" type="number" value="{$goPage}" min="1" max="{$pageCount}" aria-label="页码输入框" style="text-align: center; height: 25px; line-height: 20px; margin-top: 5px; width: 46px;">
     <span class="text">页</span>
     <span class="btn go-page" role="button" tabindex="0" style="border: solid 1px #ccc; padding: 0px; height: 25px; width: 46px; line-height: 25px;">确定</span>
    </div> 
goHtml;
   $buttons[] = $goHtml;
   $pageLink = $this->pagination->createUrl(false);
   $goJs = <<<goJs
    $(".go-page").on("click", function () {
     var _this = $(this),
      _pageInput = _this.siblings("input"),
      goPage = _pageInput.val(),
      pageLink = "{$pageLink}";
      pageLink = pageLink.replace("page=1", "page="+goPage);
     if (goPage >= 1 && goPage <= {$pageCount}) {
      window.location.href=pageLink;
     } else {
      _pageInput.focus();
     }
    });
goJs;
   $this->view->registerJs($goJs);
  }
  return Html::tag('ul', implode("\n", $buttons), $this->options);
 }
}

下面看具体使用:

<?= GoLinkPager::widget([ 
 'pagination' => $pages, 
 'go' => true, 
]); ?>

可以看出,使用起来也是贼方便贼方便的!加一个属性go为true即可。

需要说明的是,完整版代码中go部分html js可根据自己需要自行修改整理!

以上内容是小编给大家介绍的yii2分页之实现跳转到具体某页的实例代码,希望对大家有所帮助!

PHP 相关文章推荐
php Smarty date_format [格式化时间日期]
Mar 15 PHP
php中使用Imagick实现图像直方图的实现代码
Aug 30 PHP
php获取服务器信息的实现代码
Feb 04 PHP
注意:php5.4删除了session_unregister函数
Aug 05 PHP
mcrypt启用 加密以及解密过程详细解析
Aug 07 PHP
php读取富文本的时p标签会出现红线是怎么回事
May 13 PHP
经典PHP加密解密函数Authcode()修复版代码
Apr 05 PHP
微信公众平台之快递查询功能用法实例
Apr 14 PHP
php开发微信支付获取用户地址
Oct 04 PHP
Symfony2中被遗弃的getRequest()方法分析
Mar 17 PHP
PHP实现ASCII码与字符串相互转换的方法
Apr 29 PHP
IOS 开发之NSDictionary转换成JSON字符串
Aug 14 PHP
[原创]php实现子字符串位置相互对调互换的方法
Jun 02 #PHP
PHP处理数组和XML之间的互相转换
Jun 02 #PHP
PHP邮箱验证示例教程
Jun 01 #PHP
PHP微信公众号自动发送红包API
Jun 01 #PHP
PHP模块化安装教程
Jun 01 #PHP
深入理解PHP之源码目录结构与功能说明
Jun 01 #PHP
基于PHP生成简单的验证码
Jun 01 #PHP
You might like
PHP XML操作类DOMDocument
2009/12/16 PHP
解析PHP对现有搜索引擎的调用
2013/06/25 PHP
解析php入库和出库
2013/06/25 PHP
JavaScript实现禁止后退的方法
2006/12/27 Javascript
这些年、我收集的JQuery代码小结
2012/08/01 Javascript
javascript中的undefined和not defined区别示例介绍
2014/02/26 Javascript
给应用部分的js代码设定一个统一的入口
2014/06/15 Javascript
javascript实现当前页导航激活的方法
2015/02/27 Javascript
Jquery操作Ajax方法小结
2015/11/29 Javascript
JavaScript如何实现组合列表框中元素移动效果
2016/03/01 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
详细解读Jquery各Ajax函数($.get(),$.post(),$.ajax(),$.getJSON())
2016/08/15 Javascript
js实现点击图片自动提交action的简单方法
2016/10/16 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
2017/03/29 Javascript
nodejs mysql 实现分页的方法
2017/06/06 NodeJs
Laravel整合Bootstrap 4的完整方案(推荐)
2018/01/25 Javascript
jQuery实现炫丽的3d旋转星空效果
2018/07/04 jQuery
JS中超越现实的匿名函数用法实例分析
2019/06/21 Javascript
微信小程序中悬浮窗功能的实现代码
2019/08/02 Javascript
15 分钟掌握vue-next响应式原理
2019/10/13 Javascript
js判断非127开头的IP地址的实例代码
2020/01/05 Javascript
JS实现轮播图效果
2020/01/11 Javascript
python基础教程之基本内置数据类型介绍
2014/02/20 Python
Python设计足球联赛赛程表程序的思路与简单实现示例
2016/06/28 Python
numpy求平均值的维度设定的例子
2019/08/24 Python
Python 输出详细的异常信息(traceback)方式
2020/04/08 Python
Python解析m3u8拼接下载mp4视频文件的示例代码
2021/03/03 Python
CSS3属性 line-clamp控制文本行数的使用
2020/03/19 HTML / CSS
前端canvas水印快速制作(附完整代码)
2019/09/19 HTML / CSS
北京一家公司的.net开发工程师笔试题
2012/04/17 面试题
小学先进集体事迹材料
2014/05/31 职场文书
工作保证书
2015/01/17 职场文书
2015年医务人员医德医风自我评价
2015/03/03 职场文书
Python中requests做接口测试的方法
2021/05/30 Python
Python 正则模块详情
2021/11/02 Python
Python 中 Shutil 模块详情
2021/11/11 Python