Yii Framework v1.1.10 绫诲弬鑰

CPagination

system.web
缁ф壙 class CPagination » CComponent
婧愯嚜 1.0
鐗堟湰 $Id: CPagination.php 3515 2011-12-28 12:29:24Z mdomba $
婧愮爜 framework/web/CPagination.php
CPagination鍛堢幇鐩稿叧淇℃伅鍒伴〉鐮併

褰撴暟鎹渶瑕佹覆鏌撳埌澶氶〉鏃讹紝鎴戜滑鍙兘浣跨敤CPagination鍘诲憟鐜颁俊鎭紝 璇稿total item countpage sizecurrent page绛夈 杩欎簺淇℃伅琚紶閫掑埌pagers娓叉煋 鍒嗛〉鎸夐挳鎴栭摼鎺ャ

渚嬪锛

鎺у埗鍣ㄥ姩浣滐細
function actionIndex(){
    $criteria = new CDbCriteria();
    $count=Article::model()->count($criteria);
    $pages=new CPagination($count);

    // 杩斿洖鍓嶄竴椤
    $pages->pageSize=10;
    $pages->applyLimit($criteria);
    $models = Post::model()->findAll($criteria);

    $this->render('index', array(
    'models' => $models,
         'pages' => $pages
    ));
}


瑙嗗浘锛
<?php foreach($models as $model): ?>
    // 鏄剧ず涓涓ā鍨
<?php endforeach; ?>

// 鏄剧ず鍒嗛〉
<?php $this->widget('CLinkPager', array(
    'pages' => $pages,
)) ?>

鍏叡灞炴

闅愯棌缁ф壙灞炴

灞炴绫诲瀷鎻忚堪瀹氫箟鍦
currentPage integer 褰撳墠椤电殑浠庨浂寮濮嬬殑绱㈠紩銆傞粯璁ゆ槸0銆 CPagination
itemCount integer 椤圭洰鎬绘暟銆傞粯璁ゆ槸0銆 CPagination
limit integer 鏁版嵁鐨勯檺鍒躲 杩欎釜鍙兘鐢ㄤ綔璁剧疆LIMIT鍊间负涓鏉QL璇彞鍘昏幏鍙栧綋鍓嶉〉鏁版嵁銆 杩欎釜杩斿洖鍜pageSize鍚屾牱鐨勫笺 CPagination
offset integer 鏁版嵁鐨勫亸绉婚噺銆 杩欎釜鍙兘鐢ㄤ簬璁剧疆OFFSET鍊间负涓涓猄QL璇彞鍘昏幏鍙栧綋鍓嶉〉鏁版嵁銆 CPagination
pageCount integer 椤电殑鏁扮洰 CPagination
pageSize integer 姣忎竴椤电殑椤圭洰鏁伴噺銆傞粯璁ゆ槸10銆 CPagination
pageVar string 瀛樺偍褰撳墠椤电储寮曠殑GET鍙橀噺鍚嶇О銆傞粯璁ゆ槸鈥榩age鈥欍 CPagination
params array 褰撶敓鎴愬垎椤礥RL鏃剁敤浜庢浛鎹ET鐨勫弬鏁帮紙name=>value锛夈 榛樿鏄痭ull锛屾剰鍛崇潃浣跨敤褰撳墠鍙橀噺GET鍙傛暟銆 CPagination
route string 鏄剧ず椤靛唴瀹圭殑璺敱锛坈ontroller ID鍜宎ction ID锛夈 榛樿涓虹┖瀛楃涓诧紝鎰忓懗鐫浣跨敤褰撳墠璺敱銆 CPagination
validateCurrentPage boolean 鏄惁纭繚currentPage杩斿洖涓涓湁鏁堢殑椤电爜銆 褰撹繖涓睘鎬т负true鏃讹紝鍊奸氳繃currentPage杩斿洖锛屽皢鎬绘槸鍦 0鍜(pageCount-1)涔嬮棿銆傚洜涓pageCount渚濊禆姝g‘鐨itemCount鍊硷紝 杩欐剰鍛崇潃浣犲繀椤荤煡閬撴暟鎹」鐩绘暟锛屽綋浣犳兂璁块棶currentPage鏃躲 杩欎釜鍩轰簬SQL鏌ヨ鏄甯哥殑锛屼絾鏄湪鍏跺畠绉嶇被鐨勬煡璇㈡槸涓嶅彲琛岀殑锛堜緥濡侻ongoDB锛夈 鍦ㄩ偅绉嶆儏鍐典笅锛屼綘鍙互璁剧疆杩欎釜灞炴т负false鍘昏烦杩囬獙璇侊紙鐒跺悗浣犲彲鑳介渶瑕佽嚜宸遍獙璇侊級銆 榛樿涓簍rue銆 CPagination

鍏叡鏂规硶

闅愯棌缁ф壙鏂规硶

鏂规硶鎻忚堪瀹氫箟鍦
__call() 濡傛灉绫讳腑娌℃湁璋冪殑鏂规硶鍚嶏紝鍒欒皟鐢ㄨ繖涓柟娉曘 CComponent
__construct() 鏋勯犳柟娉曘 CPagination
__get() 杩斿洖涓涓睘鎬у笺佷竴涓簨浠跺鐞嗙▼搴忓垪琛ㄦ垨涓涓涓哄悕绉般 CComponent
__isset() 妫鏌ヤ竴涓睘鎬ф槸鍚︿负null銆 CComponent
__set() 璁剧疆涓涓粍浠剁殑灞炴у笺 CComponent
__unset() 璁剧疆涓涓粍浠剁殑灞炴т负null銆 CComponent
applyLimit() 涓烘寚瀹氱殑鏌ヨ鏉′欢搴旂敤LIMIT鍜孫FFSET銆 CPagination
asa() 杩斿洖杩欎釜鍚嶅瓧鐨勮涓哄璞° CComponent
attachBehavior() 闄勫姞涓涓涓哄埌缁勪欢銆 CComponent
attachBehaviors() 闄勫姞涓涓涓哄垪琛ㄥ埌缁勪欢銆 CComponent
attachEventHandler() 涓轰簨浠堕檮鍔犱竴涓簨浠跺鐞嗙▼搴忋 CComponent
canGetProperty() 纭畾灞炴ф槸鍚﹀彲璇汇 CComponent
canSetProperty() 纭畾灞炴ф槸鍚﹀彲鍐欍 CComponent
createPageUrl() 鍒涘缓閫傚悎鐢ㄤ簬鍒嗛〉鐨刄RL銆 CPagination
detachBehavior() 浠庣粍浠朵腑鍒嗙涓涓涓恒 CComponent
detachBehaviors() 浠庣粍浠朵腑鍒嗙鎵鏈夎涓恒 CComponent
detachEventHandler() 鍒嗙涓涓瓨鍦ㄧ殑浜嬩欢澶勭悊绋嬪簭銆 CComponent
disableBehavior() 绂佺敤涓涓檮鍔犺涓恒 CComponent
disableBehaviors() 绂佺敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 CComponent
enableBehavior() 鍚敤涓涓檮鍔犺涓恒 CComponent
enableBehaviors() 鍚敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 CComponent
evaluateExpression() 璁$畻涓涓狿HP琛ㄨ揪寮忥紝鎴栨牴鎹粍浠朵笂涓嬫枃鎵ц鍥炶皟銆 CComponent
getCurrentPage() 杩斿洖褰撳墠椤电殑浠庨浂寮濮嬬殑绱㈠紩銆傞粯璁ゆ槸0銆 CPagination
getEventHandlers() 杩斿洖涓涓簨浠剁殑闄勫姞澶勭悊绋嬪簭鍒楄〃銆 CComponent
getItemCount() 杩斿洖椤圭洰鎬绘暟銆傞粯璁ゆ槸0銆 CPagination
getLimit() 杩斿洖鏁版嵁鐨勯檺鍒躲 杩欎釜鍙兘鐢ㄤ綔璁剧疆LIMIT鍊间负涓鏉QL璇彞鍘昏幏鍙栧綋鍓嶉〉鏁版嵁銆 杩欎釜杩斿洖鍜pageSize鍚屾牱鐨勫笺 CPagination
getOffset() 杩斿洖鏁版嵁鐨勫亸绉婚噺銆 杩欎釜鍙兘鐢ㄤ簬璁剧疆OFFSET鍊间负涓涓猄QL璇彞鍘昏幏鍙栧綋鍓嶉〉鏁版嵁銆 CPagination
getPageCount() 杩斿洖椤电殑鏁扮洰 CPagination
getPageSize() 杩斿洖姣忎竴椤电殑椤圭洰鏁伴噺銆傞粯璁ゆ槸10銆 CPagination
hasEvent() 纭畾涓涓簨浠舵槸鍚﹀畾涔夈 CComponent
hasEventHandler() 妫鏌ヤ簨浠舵槸鍚︽湁闄勫姞鐨勫鐞嗙▼搴忋 CComponent
hasProperty() 纭畾灞炴ф槸鍚﹁瀹氫箟銆 CComponent
raiseEvent() 鍙戣捣涓涓簨浠躲 CComponent
setCurrentPage() 璁剧疆褰撳墠椤电殑浠庨浂寮濮嬬殑绱㈠紩銆 CPagination
setItemCount() 璁剧疆椤圭洰鎬绘暟銆 CPagination
setPageSize() 璁剧疆姣忎竴椤电殑椤圭洰鏁伴噺 CPagination

灞炴ц缁

currentPage 灞炴
public integer getCurrentPage(boolean $recalculate=true)
public void setCurrentPage(integer $value)

褰撳墠椤电殑浠庨浂寮濮嬬殑绱㈠紩銆傞粯璁ゆ槸0銆

itemCount 灞炴
public integer getItemCount()
public void setItemCount(integer $value)

椤圭洰鎬绘暟銆傞粯璁ゆ槸0銆

limit 灞炴 鍙 锛堝彲鐢ㄨ嚜 v1.1.0锛
public integer getLimit()

鏁版嵁鐨勯檺鍒躲 杩欎釜鍙兘鐢ㄤ綔璁剧疆LIMIT鍊间负涓鏉QL璇彞鍘昏幏鍙栧綋鍓嶉〉鏁版嵁銆 杩欎釜杩斿洖鍜pageSize鍚屾牱鐨勫笺

offset 灞炴 鍙 锛堝彲鐢ㄨ嚜 v1.1.0锛
public integer getOffset()

鏁版嵁鐨勫亸绉婚噺銆 杩欎釜鍙兘鐢ㄤ簬璁剧疆OFFSET鍊间负涓涓猄QL璇彞鍘昏幏鍙栧綋鍓嶉〉鏁版嵁銆

pageCount 灞炴 鍙
public integer getPageCount()

椤电殑鏁扮洰

pageSize 灞炴
public integer getPageSize()
public void setPageSize(integer $value)

姣忎竴椤电殑椤圭洰鏁伴噺銆傞粯璁ゆ槸10銆

pageVar 灞炴
public string $pageVar;

瀛樺偍褰撳墠椤电储寮曠殑GET鍙橀噺鍚嶇О銆傞粯璁ゆ槸鈥榩age鈥欍

params 灞炴
public array $params;

褰撶敓鎴愬垎椤礥RL鏃剁敤浜庢浛鎹ET鐨勫弬鏁帮紙name=>value锛夈 榛樿鏄痭ull锛屾剰鍛崇潃浣跨敤褰撳墠鍙橀噺GET鍙傛暟銆

route 灞炴
public string $route;

鏄剧ず椤靛唴瀹圭殑璺敱锛坈ontroller ID鍜宎ction ID锛夈 榛樿涓虹┖瀛楃涓诧紝鎰忓懗鐫浣跨敤褰撳墠璺敱銆

validateCurrentPage 灞炴 锛堝彲鐢ㄨ嚜 v1.1.4锛
public boolean $validateCurrentPage;

鏄惁纭繚currentPage杩斿洖涓涓湁鏁堢殑椤电爜銆 褰撹繖涓睘鎬т负true鏃讹紝鍊奸氳繃currentPage杩斿洖锛屽皢鎬绘槸鍦 0鍜(pageCount-1)涔嬮棿銆傚洜涓pageCount渚濊禆姝g‘鐨itemCount鍊硷紝 杩欐剰鍛崇潃浣犲繀椤荤煡閬撴暟鎹」鐩绘暟锛屽綋浣犳兂璁块棶currentPage鏃躲 杩欎釜鍩轰簬SQL鏌ヨ鏄甯哥殑锛屼絾鏄湪鍏跺畠绉嶇被鐨勬煡璇㈡槸涓嶅彲琛岀殑锛堜緥濡侻ongoDB锛夈 鍦ㄩ偅绉嶆儏鍐典笅锛屼綘鍙互璁剧疆杩欎釜灞炴т负false鍘昏烦杩囬獙璇侊紙鐒跺悗浣犲彲鑳介渶瑕佽嚜宸遍獙璇侊級銆 榛樿涓簍rue銆

鏂规硶璇︾粏

__construct() 鏂规硶
public void __construct(integer $itemCount=0)
$itemCount integer 椤圭洰鎬绘暟銆
婧愮爜锛 framework/web/CPagination.php#108 (鏄剧ず)
public function __construct($itemCount=0)
{
    
$this->setItemCount($itemCount);
}

鏋勯犳柟娉曘

applyLimit() 鏂规硶
public void applyLimit(CDbCriteria $criteria)
$criteria CDbCriteria 灏嗚鍜宭imit涓璧峰簲鐢ㄧ殑鏌ヨ鏉′欢
婧愮爜锛 framework/web/CPagination.php#215 (鏄剧ず)
public function applyLimit($criteria)
{
    
$criteria->limit=$this->getLimit();
    
$criteria->offset=$this->getOffset();
}

涓烘寚瀹氱殑鏌ヨ鏉′欢搴旂敤LIMIT鍜孫FFSET銆

createPageUrl() 鏂规硶
public string createPageUrl(CController $controller, integer $page)
$controller CController the controller that will create the actual URL
$page integer the page that the URL should point to. This is a zero-based index.
{return} string the created URL
婧愮爜锛 framework/web/CPagination.php#201 (鏄剧ず)
public function createPageUrl($controller,$page)
{
    
$params=$this->params===null $_GET $this->params;
    if(
$page>0// page 0 is the default
        
$params[$this->pageVar]=$page+1;
    else
        unset(
$params[$this->pageVar]);
    return 
$controller->createUrl($this->route,$params);
}

鍒涘缓閫傚悎鐢ㄤ簬鍒嗛〉鐨刄RL銆 杩欎釜鏂规硶涓昏鏄綋鍒涘缓URL鐢ㄤ簬澶勭悊鍒嗛〉鏃惰鍒嗛〉鍣ㄨ皟鐢ㄣ 榛樿鐨勫疄鐜版槸 璋冪敤鎺у埗鍣ㄧ殑甯︽湁鍒嗛〉淇℃伅鐨刢reateUrl鏂规硶銆 浣犲彲浠ヨ鐩栬繖涓柟娉曪紝 濡傛灉浣犵殑URL鏂规涓嶅悓浜庢帶鍒跺櫒鐨刢reateUrl鎵鏀寔鐨勬柟娉曘

getCurrentPage() 鏂规硶
public integer getCurrentPage(boolean $recalculate=true)
$recalculate boolean 鏄惁閲嶆柊褰撳墠椤靛熀浜庨〉澶у皬鍜岄」鐩暟閲忋
{return} integer 褰撳墠椤电殑浠庨浂寮濮嬬殑绱㈠紩銆傞粯璁ゆ槸0銆
婧愮爜锛 framework/web/CPagination.php#159 (鏄剧ず)
public function getCurrentPage($recalculate=true)
{
    if(
$this->_currentPage===null || $recalculate)
    {
        if(isset(
$_GET[$this->pageVar]))
        {
            
$this->_currentPage=(int)$_GET[$this->pageVar]-1;
            if(
$this->validateCurrentPage)
            {
                
$pageCount=$this->getPageCount();
                if(
$this->_currentPage>=$pageCount)
                    
$this->_currentPage=$pageCount-1;
            }
            if(
$this->_currentPage<0)
                
$this->_currentPage=0;
        }
        else
            
$this->_currentPage=0;
    }
    return 
$this->_currentPage;
}

getItemCount() 鏂规硶
public integer getItemCount()
{return} integer 椤圭洰鎬绘暟銆傞粯璁ゆ槸0銆
婧愮爜锛 framework/web/CPagination.php#133 (鏄剧ず)
public function getItemCount()
{
    return 
$this->_itemCount;
}

getLimit() 鏂规硶 锛堝彲鐢ㄨ嚜 v1.1.0锛
public integer getLimit()
{return} integer 鏁版嵁鐨勯檺鍒躲 杩欎釜鍙兘鐢ㄤ綔璁剧疆LIMIT鍊间负涓鏉QL璇彞鍘昏幏鍙栧綋鍓嶉〉鏁版嵁銆 杩欎釜杩斿洖鍜pageSize鍚屾牱鐨勫笺
婧愮爜锛 framework/web/CPagination.php#237 (鏄剧ず)
public function getLimit()
{
    return 
$this->getPageSize();
}

getOffset() 鏂规硶 锛堝彲鐢ㄨ嚜 v1.1.0锛
public integer getOffset()
{return} integer 鏁版嵁鐨勫亸绉婚噺銆 杩欎釜鍙兘鐢ㄤ簬璁剧疆OFFSET鍊间负涓涓猄QL璇彞鍘昏幏鍙栧綋鍓嶉〉鏁版嵁銆
婧愮爜锛 framework/web/CPagination.php#226 (鏄剧ず)
public function getOffset()
{
    return 
$this->getCurrentPage()*$this->getPageSize();
}

getPageCount() 鏂规硶
public integer getPageCount()
{return} integer 椤电殑鏁扮洰
婧愮爜锛 framework/web/CPagination.php#150 (鏄剧ず)
public function getPageCount()
{
    return (int)((
$this->_itemCount+$this->_pageSize-1)/$this->_pageSize);
}

getPageSize() 鏂规硶
public integer getPageSize()
{return} integer 姣忎竴椤电殑椤圭洰鏁伴噺銆傞粯璁ゆ槸10銆
婧愮爜锛 framework/web/CPagination.php#116 (鏄剧ず)
public function getPageSize()
{
    return 
$this->_pageSize;
}

setCurrentPage() 鏂规硶
public void setCurrentPage(integer $value)
$value integer 褰撳墠椤电殑浠庨浂寮濮嬬殑绱㈠紩銆
婧愮爜锛 framework/web/CPagination.php#184 (鏄剧ず)
public function setCurrentPage($value)
{
    
$this->_currentPage=$value;
    
$_GET[$this->pageVar]=$value+1;
}

setItemCount() 鏂规硶
public void setItemCount(integer $value)
$value integer 椤圭洰鎬绘暟銆
婧愮爜锛 framework/web/CPagination.php#141 (鏄剧ず)
public function setItemCount($value)
{
    if((
$this->_itemCount=$value)<0)
        
$this->_itemCount=0;
}

setPageSize() 鏂规硶
public void setPageSize(integer $value)
$value integer 姣忎竴椤电殑椤圭洰鏁伴噺
婧愮爜锛 framework/web/CPagination.php#124 (鏄剧ず)
public function setPageSize($value)
{
    if((
$this->_pageSize=$value)<=0)
        
$this->_pageSize=self::DEFAULT_PAGE_SIZE;
}

Copyright © 2008-2011 by Yii Software LLC
All Rights Reserved.