yii分頁(yè)組件用法實(shí)例分析
本文實(shí)例講述了yii分頁(yè)組件用法。分享給大家供大家參考,具體如下:
該案例使用時(shí),分頁(yè)類(lèi)在yii框架中以組件的形式存在于components中。
action代碼如下:
public function actionIndex(){ $user=User::model(); //分頁(yè)的使用 $count=$user->count(); //獲取總頁(yè)數(shù) $pagesize=3; //每一頁(yè)顯示的記錄條數(shù) $page=new Page($count,$pagesize); $sql="select * from {{user}} $page->limit"; $info=$user->findAllBySql($sql); $show_page=$page->fpage(); $this->renderPartial("index",array("info"=>$info,'show_page'=>$show_page)); }
在view頁(yè)面,遍歷info即可獲取信息,輸出show_page即可顯示分頁(yè)列表等信息。
現(xiàn)附上page.php代碼如下:
<?php /** * 分頁(yè)類(lèi),以組件形式存在于componnets文件中 */ class Page { private $total; //數(shù)據(jù)表中總記錄數(shù) private $listRows; //每頁(yè)顯示行數(shù) private $limit; private $uri; private $pageNum; //頁(yè)數(shù) private $config=array('header'=>"個(gè)記錄", "prev"=>"上一頁(yè)", "next"=>"下一頁(yè)", "first"=>"首 頁(yè)", "last"=>"尾 頁(yè)"); private $listNum=8; /* * $total * $listRows */ public function __construct($total, $listRows=10, $pa=""){ $this->total=$total; $this->listRows=$listRows; $this->uri=$this->getUri($pa); $this->page=!empty($_GET["page"]) ? $_GET["page"] : 1; $this->pageNum=ceil($this->total/$this->listRows); $this->limit=$this->setLimit(); } private function setLimit(){ return "Limit ".($this->page-1)*$this->listRows.", {$this->listRows}"; } private function getUri($pa){ $url=$_SERVER["REQUEST_URI"].(strpos($_SERVER["REQUEST_URI"], '?')?'':"?").$pa; $parse=parse_url($url); if(isset($parse["query"])){ parse_str($parse['query'],$params); unset($params["page"]); $url=$parse['path'].'?'.http_build_query($params); } return $url; } function __get($args){ if($args=="limit") return $this->limit; else return null; } private function start(){ if($this->total==0) return 0; else return ($this->page-1)*$this->listRows+1; } private function end(){ return min($this->page*$this->listRows,$this->total); } private function first(){ $html=''; if($this->page==1) $html.=''; else $html.=" <a href='{$this->uri}&page=1'>{$this->config["first"]}</a> "; return $html; } private function prev(){ $html=''; if($this->page==1) $html.=''; else $html.=" <a href='{$this->uri}&page=".($this->page-1)."'>{$this->config["prev"]}</a> "; return $html; } private function pageList(){ $linkPage=""; $inum=floor($this->listNum/2); for($i=$inum; $i>=1; $i--){ $page=$this->page-$i; if($page<1) continue; $linkPage.=" <a href='{$this->uri}&page={$page}'>{$page}</a> "; } $linkPage.=" {$this->page} "; for($i=1; $i<=$inum; $i++){ $page=$this->page+$i; if($page<=$this->pageNum) $linkPage.=" <a href='{$this->uri}&page={$page}'>{$page}</a> "; else break; } return $linkPage; } private function next(){ $html=''; if($this->page==$this->pageNum) $html.=''; else $html.=" <a href='{$this->uri}&page=".($this->page+1)."'>{$this->config["next"]}</a> "; return $html; } private function last(){ $html=''; if($this->page==$this->pageNum) $html.=''; else $html.=" <a href='{$this->uri}&page=".($this->pageNum)."'>{$this->config["last"]}</a> "; return $html; } private function goPage(){ return ' <input type="text" onkeydown="javascript:if(event.keyCode==13){var page=(this.value>'.$this->pageNum.')?'.$this->pageNum.':this.value;location=\''.$this->uri.'&page=\'+page+\'\'}" value="'.$this->page.'" style="width:25px"><input type="button" value="GO" onclick="javascript:var page=(this.previousSibling.value>'.$this->pageNum.')?'.$this->pageNum.':this.previousSibling.value;location=\''.$this->uri.'&page=\'+page+\'\'"> '; } function fpage($display=array(0,1,2,3,4,5,6,7,8)){ $html[0]=" 共有<b>{$this->total}</b>{$this->config["header"]} "; $html[1]=" 每頁(yè)顯示<b>".($this->end()-$this->start()+1)."</b>條,本頁(yè)<b>{$this->start()}-{$this->end()}</b>條 "; $html[2]=" <b>{$this->page}/{$this->pageNum}</b>頁(yè) "; $html[3]=$this->first(); $html[4]=$this->prev(); $html[5]=$this->pageList(); $html[6]=$this->next(); $html[7]=$this->last(); $html[8]=$this->goPage(); $fpage=''; foreach($display as $index){ $fpage.=$html[$index]; } return $fpage; } }
希望本文所述對(duì)大家基于yii框架的PHP程序設(shè)計(jì)有所幫助。
- Yii2.0框架實(shí)現(xiàn)帶分頁(yè)的多條件搜索功能示例
- Yii2.0小部件GridView(兩表聯(lián)查/搜索/分頁(yè))功能的實(shí)現(xiàn)代碼
- yii2實(shí)現(xiàn)分頁(yè),帶搜索的分頁(yè)功能示例
- yii2分頁(yè)之實(shí)現(xiàn)跳轉(zhuǎn)到具體某頁(yè)的實(shí)例代碼
- Yii2分頁(yè)的使用及其擴(kuò)展方法詳解
- Yii分頁(yè)用法實(shí)例詳解
- Yii使用CLinkPager分頁(yè)實(shí)例詳解
- Yii列表定義與使用分頁(yè)方法小結(jié)(3種方法)
- 詳解Yii實(shí)現(xiàn)分頁(yè)的兩種方法
- Yii1.1中通過(guò)Sql查詢(xún)進(jìn)行的分頁(yè)操作方法
- yii使用bootstrap分頁(yè)樣式的實(shí)例
- YII2框架中分頁(yè)組件的使用方法示例
相關(guān)文章
PHP如何使用JWT做Api接口身份認(rèn)證的實(shí)現(xiàn)
這篇文章主要介紹了PHP如何使用JWT做Api接口身份認(rèn)證的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02php實(shí)現(xiàn)的一個(gè)很好用HTML解析器類(lèi)可用于采集數(shù)據(jù)
下面就是這個(gè) HTML解析類(lèi)及用法,下面的功能是采集www.opendir.cn這個(gè)網(wǎng)站的百度收錄數(shù)據(jù),需要的朋友可以測(cè)試下2013-09-09Laravel使用消息隊(duì)列需要注意的一些問(wèn)題
這篇文章主要給大家介紹了關(guān)于Laravel使用消息隊(duì)列需要注意的一些問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起看看吧。2017-12-12Symfony2實(shí)現(xiàn)在controller中獲取url的方法
這篇文章主要介紹了Symfony2實(shí)現(xiàn)在controller中獲取url的方法,實(shí)例分析了Symfony獲取URL的常用方法與使用技巧,需要的朋友可以參考下2016-03-03PHP控制前臺(tái)彈出對(duì)話(huà)框的實(shí)現(xiàn)方法
本文給大家分享通過(guò)php echo出javascript腳本來(lái)控制前臺(tái)彈出對(duì)話(huà)框的效果,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看下吧2016-08-08THINKPHP項(xiàng)目開(kāi)發(fā)中的日志記錄實(shí)例分析
這篇文章主要介紹了THINKPHP項(xiàng)目開(kāi)發(fā)中的日志記錄用法,以實(shí)例形式較為全面的分析了日志表的建立與相關(guān)數(shù)據(jù)庫(kù)操作方法,具有一定的實(shí)用價(jià)值,需要的朋友可以參考下2014-12-12Thinkphp通過(guò)一個(gè)入口文件如何區(qū)分移動(dòng)端和PC端
這篇文章主要介紹了Thinkphp通過(guò)一個(gè)入口文件區(qū)分移動(dòng)端和PC端的方法,需要的的朋友參考下吧2017-04-04基于PHP后臺(tái)的Android新聞瀏覽客戶(hù)端
這篇文章主要為大家詳細(xì)介紹了基于PHP后臺(tái)的Android新聞瀏覽客戶(hù)端,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05