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 购物车的例子
May 04 PHP
基于empty函数的判断详解
Jun 17 PHP
php另类上传图片的方法(PHP用Socket上传图片)
Oct 30 PHP
浅析php数据类型转换
Jan 09 PHP
使用纯php代码实现页面伪静态的方法
Jul 25 PHP
PHP中利用sleep函数实现定时执行功能实现代码
Aug 25 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
Sep 22 PHP
thinkPHP框架实现的无限回复评论功能示例
Jun 09 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
Jun 14 PHP
PHP使用XMLWriter读写xml文件操作详解
Jul 31 PHP
如何解决PHP获取不到SESSION信息之一般情况
Oct 10 PHP
详解PHP设计模式之依赖注入模式
May 25 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
ThinkPHP简单使用memcache缓存的方法
2016/11/15 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
jQuery UI Datepicker length为空或不是对象错误的解决方法
2010/12/19 Javascript
JavaScript获取页面上某个元素的代码
2011/03/13 Javascript
基于jquery的滚动条滚动固定div(附演示下载)
2012/10/29 Javascript
javascript 函数声明与函数表达式的区别介绍
2013/10/05 Javascript
javascript数据结构之双链表插入排序实例详解
2015/11/25 Javascript
基于BootStrap Metronic开发框架经验小结【九】实现Web页面内容的打印预览和保存操作
2016/05/12 Javascript
JS 插件dropload下拉刷新、上拉加载使用小结
2017/04/13 Javascript
详细AngularJs4的图片剪裁组件的实例
2017/07/12 Javascript
原生JS 购物车及购物页面的cookie使用方法
2017/08/21 Javascript
基于cropper.js封装vue实现在线图片裁剪组件功能
2018/03/01 Javascript
模块化react-router配置方法详解
2019/06/03 Javascript
layer弹出层自定义提交取消按钮的例子
2019/09/10 Javascript
24行JavaScript代码实现Redux的方法实例
2019/11/17 Javascript
浅谈对yield的初步理解
2017/05/29 Python
python 经典数字滤波实例
2019/12/16 Python
使用pytorch实现可视化中间层的结果
2019/12/30 Python
基于Tensorflow批量数据的输入实现方式
2020/02/05 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
2020/02/26 Python
PyQt5 QDockWidget控件应用详解
2020/08/12 Python
如何基于matlab相机标定导出xml文件
2020/11/02 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
2020/12/29 Python
英国领先的男装设计师服装购物网站:Mainline Menswear
2018/02/04 全球购物
澳大利亚礼品篮网站:Macarthur Baskets
2019/10/14 全球购物
九州传奇上机题
2014/07/10 面试题
造型师求职自荐信
2013/09/27 职场文书
面包店的创业计划书范文
2014/01/16 职场文书
自行车租赁公司创业计划书
2014/01/28 职场文书
构建高效课堂实施方案
2014/03/13 职场文书
市级三好学生事迹材料
2014/08/27 职场文书
个人收入证明模板
2014/09/18 职场文书
乡镇镇长个人整改措施
2014/10/01 职场文书
2014教师年度思想工作总结
2014/11/10 职场文书
国庆庆典邀请函
2015/02/02 职场文书
压缩Redis里的字符串大对象操作
2021/06/23 Redis