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 相关文章推荐
使用数据库保存session的方法
Oct 09 PHP
PHP4和PHP5性能测试和对比 测试代码与环境
Aug 17 PHP
YII中assets的使用示例
Jul 31 PHP
PHP的APC模块实现上传进度条
Oct 27 PHP
PHP基本语法实例总结
Sep 09 PHP
Nginx环境下PHP flush失效的解决方法
Oct 19 PHP
CI框架使用composer安装的依赖包步骤与方法分析
Nov 21 PHP
php获取开始与结束日期之间所有日期的方法
Nov 29 PHP
PHP中include()与require()的区别说明
Feb 14 PHP
PHP基于SMTP协议实现邮件发送实例代码
Apr 27 PHP
PHP简单获取随机数的常用方法小结
Jun 07 PHP
PHP基于自定义类随机生成姓名的方法示例
Aug 05 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调整服务器时间的方法
2015/04/03 PHP
PHP数学运算与数据处理实例分析
2016/04/01 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
2016/12/19 PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
2017/03/17 PHP
PHP常见加密函数用法示例【crypt与md5】
2019/01/27 PHP
Laravel 5.2 文档 数据库 ―― 起步介绍
2019/10/21 PHP
让回调函数 showResponse 也带上参数的代码
2007/08/13 Javascript
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
2009/11/14 Javascript
javascript中的一些注意事项 更新中
2010/12/06 Javascript
js nextSibling属性和previousSibling属性概述及使用注意
2013/02/16 Javascript
浅析JS刷新框架中的其他页面 &amp;&amp; JS刷新窗口方法汇总
2013/07/08 Javascript
jQuery动画与特效详解
2015/02/01 Javascript
JS实现光滑展开合拢的菜单效果代码
2015/09/16 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
2016/03/25 Javascript
全国省市二级联动下拉菜单 js版
2016/05/10 Javascript
微信小程序 Image API实例详解
2016/09/30 Javascript
jQuery Form表单取值的方法
2017/01/11 Javascript
jQuery实现点击关注和取消功能
2017/07/03 jQuery
Vue二次封装axios为插件使用详解
2018/05/21 Javascript
vue 解决addRoutes多次添加路由重复的操作
2020/08/04 Javascript
JS数据类型分类及常用判断方法
2020/11/19 Javascript
浅谈Python 中整型对象的存储问题
2016/05/16 Python
基于python-opencv3的图像显示和保存操作
2019/06/27 Python
python字符串反转的四种方法详解
2019/12/02 Python
python脚本第一行如何写
2020/08/30 Python
泰国第一的化妆品网站:Konvy
2018/02/25 全球购物
aden + anais英国官网:美国婴儿贴身用品品牌
2019/09/08 全球购物
Napapijri西班牙在线商店:夹克、外套、运动衫等
2020/11/05 全球购物
人力资源主管岗位职责
2014/01/29 职场文书
冰淇淋店的创业计划书
2014/02/07 职场文书
学校拾金不昧表扬信
2015/01/16 职场文书
英文道歉信
2015/01/20 职场文书
幼儿园小班班务总结
2015/08/03 职场文书
Python中seaborn库之countplot的数据可视化使用
2021/06/11 Python
Python pandas之求和运算和非空值个数统计
2021/08/07 Python
CSS font-variation 可变字体的魅力(实例详解)
2022/03/03 HTML / CSS