测试图例:
效果图:
实现代码:
/** * * @param $page 页码(1至正无穷) * @param $num 数据中多上行为一页 * @param $rows 数据的总行数 * @param $length 下标的最大长度 * @return array */ public function pagedate($page, $num , $rows , $length){ //初始化数据 $maxpage = 0; //最大页码 $minpage = 0; //最小页码 $serverpage = 0; //下拉框中显示的页码 $pagedata = array(); //全部的页码集合(用户下拉框选择) $pageshowdata = array(); //用于显示下标的页码集合 $page = intval($page); if($rows == 0){ return $data = array( 'page' => $page, 'maxpage' => $maxpage, 'minpage' => $minpage, 'serverpage' => $serverpage, 'pagedata' => $pagedata, 'pageshowdata' => $pageshowdata ); } //得到最大分页和最小分页 $maxpage = intval($rows / $num); $double = $rows % $num; if($double > 0.000000001) { $maxpage += 1; } $minpage = 1; $serverpage = 1; //得到页码的全部项目 for($i = 1; $i <= $maxpage; $i++ ){ $pagedata[$i] = $i; } //对页码进行正确性改正 if($page < $minpage){ $page = 1; } if($page > $maxpage){ $page = 1; } /*生成显示的页码标签*/ //生成左侧的代码快 if($page == $minpage){ $pageshowdata[1] = $page; } if($page > $minpage){ $pageshowdata[1] = $minpage; // $pageshowdata[2] = $page - 1; // << $pageshowdata[2] = '<<'; // << if($page -2 > $minpage ){ $pageshowdata[3] = $page - 2; $pageshowdata[4] = $page - 1; }elseif($page -2 == $minpage){ $pageshowdata[3] = $page - 1; } //确定选中的页码代码快 $pageshowdata[count($pageshowdata) + 1] = $page; } $count = count($pageshowdata) + 1; //生成右侧的代码块 if($page == $maxpage){ return $data = array( 'page' => $page, 'maxpage' => $maxpage, 'minpage' => $minpage, 'serverpage' => $serverpage, 'pagedata' => $pagedata, 'pageshowdata' => $pageshowdata ); } if($page < $maxpage) { if($maxpage - $page >= 2){ $j = 1; for($i = $count; $i <= $length ; $i++){ $pageshowdata[$i] = $page + $j; $j ++; if($pageshowdata[$i] == $maxpage -1){ break; } } } $count = count($pageshowdata) + 1; // $pageshowdata[$count] = $page + 1; //>> $pageshowdata[$count] = '>>'; $pageshowdata[$count + 1] = $maxpage; //得到选中的参数 $serverpage = $pageshowdata[$count-1] + 1; if($serverpage > $maxpage){ $serverpage = 1; } return $data = array( 'page' => $page, 'maxpage' => $maxpage, 'minpage' => $minpage, 'serverpage' => $serverpage, 'pagedata' => $pagedata, 'pageshowdata' => $pageshowdata ); } }
本文出自 it985博客
如对本文有疑问, 点击进行留言回复!!
使用Entrust扩展包在laravel 中实现RBAC的功能
YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用示例
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
网友评论