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 相关文章推荐
基于mysql的bbs设计(二)
Oct 09 PHP
亲密接触PHP之PHP语法学习笔记1
Dec 17 PHP
PHPMailer邮件类利用smtp.163.com发送邮件方法
Sep 11 PHP
PHP XML error parsing SOAP payload on line 1
Jun 17 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
Feb 16 PHP
phpcms模块开发之swfupload的使用介绍
Apr 28 PHP
php防注入,表单提交值转义的实现详解
Jun 10 PHP
php判断字符串在另一个字符串位置的方法
Feb 27 PHP
PHP.ini安全配置检测工具pcc简单介绍
Jul 02 PHP
php版微信自动获取收货地址api用法示例
Sep 22 PHP
PHP面向对象多态性实现方法简单示例
Sep 27 PHP
Laravel重定向,a链接跳转,控制器跳转示例
Oct 22 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
在IIS7.0下面配置PHP 5.3.2运行环境的方法
2010/04/13 PHP
php学习笔记之面向对象编程
2012/12/29 PHP
使用swoole扩展php websocket示例
2014/02/13 PHP
PHP与Java对比学习日期时间函数
2016/07/03 PHP
Json字符串转换为JS对象的高效方法实例
2013/05/01 Javascript
javascript的函数作用域
2014/11/12 Javascript
JavaScript判断FileUpload控件上传文件类型
2015/09/28 Javascript
Javascript实现Array和String互转换的方法
2015/12/21 Javascript
gulp-htmlmin压缩html的gulp插件实例代码
2016/06/06 Javascript
jquery动态遍历Json对象的属性和值的方法
2016/07/27 Javascript
webpack+vue.js实现组件化详解
2016/10/12 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
解决在vue+webpack开发中出现两个或多个菜单公用一个组件问题
2017/11/28 Javascript
在vue中,v-for的索引index在html中的使用方法
2018/03/06 Javascript
jQuery UI实现动画效果代码分享
2018/08/19 jQuery
react的滑动图片验证码组件的示例代码
2019/02/27 Javascript
浅谈Node 异步IO和事件循环
2019/05/05 Javascript
vue.js实现备忘录demo
2019/06/26 Javascript
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
2019/07/16 Javascript
微信小程序之下拉列表实现方法解析(附完整源码)
2019/08/23 Javascript
Python自定义进程池实例分析【生产者、消费者模型问题】
2016/09/19 Python
使用Python脚本和ADB命令实现卸载App
2017/02/10 Python
python中实现精确的浮点数运算详解
2017/11/02 Python
python安装后的目录在哪里
2020/06/21 Python
python/golang实现循环链表的示例代码
2020/09/14 Python
CSS3中颜色线性渐变实战
2015/07/18 HTML / CSS
助人为乐道德模范事迹材料
2014/08/16 职场文书
2015年度物流工作总结
2015/04/30 职场文书
离婚答辩状范文
2015/05/22 职场文书
2015银行年终工作总结范文
2015/05/26 职场文书
苦儿流浪记读书笔记
2015/07/01 职场文书
婚宴新郎致辞
2015/07/28 职场文书
CSS中em的正确打开方式详解
2021/04/08 HTML / CSS
python 爬取豆瓣网页的示例
2021/04/13 Python
如何在CocosCreator里画个炫酷的雷达图
2021/04/16 Javascript
pytorch Dropout过拟合的操作
2021/05/27 Python