CBaseListView
鍖 | zii.widgets |
---|---|
缁ф壙 | abstract class CBaseListView » CWidget » CBaseController » CComponent |
瀛愮被 | CGridView, CListView |
婧愯嚜 | 1.1 |
鐗堟湰 | $Id: CBaseListView.php 3101 2011-03-22 17:35:19Z qiang.xue $ |
婧愮爜 | framework/zii/widgets/CBaseListView.php |
鍏叡灞炴
灞炴 | 绫诲瀷 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|---|
actionPrefix | string | actions鐨処D鐨勫墠缂銆 褰撳井浠跺湪CController::actions涓0鏄庝簡 鍔ㄤ綔鎻愪緵鑰咃紝鍙互涓哄叾鍔ㄤ綔鐨処D鎸囧畾鍓嶇紑浠ュ尯鍒 浜庡埆鐨勫井浠舵垨鎺у埗鍣ㄣ傚綋寰欢鐢ㄤ簬鎺у埗鍣 鐨勮鍥句腑鏃讹紝蹇呴』閰嶇疆鍚屾牱鐨勫墠缂銆 | CWidget |
controller | CController | 杩斿洖姝ゅ井浠舵墍灞炵殑鎺у埗鍣ㄣ | CWidget |
dataProvider | IDataProvider | 瑙嗗浘闇瑕佹樉绀虹殑鏁版嵁婧愩 | CBaseListView |
emptyText | string | 褰dataProvider涓虹┖鏃舵樉绀虹殑鍐呭銆 | CBaseListView |
enablePagination | boolean | 鏄惁鍚敤鍒嗛〉銆傛敞鎰忥細褰IDataProvider::pagination鐨勫睘鎬 dataProvider涓篺alse鏃跺垯姝ゅ睘鎬т负false锛屽嵆涓嶅惎鐢ㄥ垎椤点 褰撳惎鐢ㄥ垎椤垫椂锛岄〉鐮佷細鍦ㄨ鍥句腑鏄剧ず銆 榛樿涓簍rue銆 | CBaseListView |
enableSorting | boolean | 鏄惁鍚敤鎺掑簭銆傛敞鎰忥細褰IDataProvider::sort鐨勫睘鎬 dataProvider涓篺alse鏃跺垯姝ゅ睘鎬т负false锛屽嵆涓嶅惎鐢ㄦ帓搴忋 褰撳惎鐢ㄦ帓搴忔椂锛岀偣鍑诲垪鍚嶅氨鍙寜璇ュ垪鎺掑簭銆 榛樿涓簍rue銆 | CBaseListView |
htmlOptions | array | 閮ㄤ欢鐨凥TML灞炴с | CBaseListView |
id | string | 杩斿洖姝ゅ井浠剁殑ID銆傚鏋滈渶瑕佺殑璇濓紝灏嗙敓浜т竴涓柊鐨処D骞跺皢鍏惰繑鍥炪 | CWidget |
itemsCssClass | string | 鏄剧ず鍚勬潯鏁版嵁鐨勫鍣ㄧ殑CSS绫汇傞粯璁や负鈥榠tems鈥欍 | CBaseListView |
loadingCssClass | string | 浣跨敤AJAX鍔犺浇鏁版嵁鏃惰繘搴︽潯瀹瑰櫒鐨凜SS绫 榛樿涓衡榣oading鈥欍 | CBaseListView |
owner | CBaseController | 杩斿洖姝ゅ井浠剁殑鎵鏈夎呮垨鍒涘缓鑰呫 | CWidget |
pager | array | pager 鐨勯厤缃俊鎭傞粯璁や负array('class'=>'CLinkPager') . |
CBaseListView |
pagerCssClass | string | 鏄剧ず椤电爜鐨勫鍣ㄧ殑CSS绫汇傞粯璁や负鈥榩ager鈥欍 | CBaseListView |
skin | mixed | 寰欢浣跨敤鐨勭毊鑲ょ殑鍚嶇О銆傞粯璁や负鈥渄efault鈥濄 濡傛灉姝ゅ睘鎬ц缃负false锛屽井浠跺皢涓嶄細鏈夌毊鑲よ浣跨敤銆 | CWidget |
summaryCssClass | string | 鏄剧ず鎽樿鐨勫鍣ㄧ殑CSS绫汇傞粯璁や负鈥榮ummary鈥欍 | CBaseListView |
summaryText | string | 鎽樿鍐呭浣跨敤鐨勬ā鏉裤
涓嬮潰鐨勮繖浜涙爣璁板皢浼氳瀵瑰簲鐨勫唴瀹规浛鎹細
|
CBaseListView |
tagName | string | 瑙嗗浘瀹瑰櫒鐨勬爣绛俱傞粯璁や负鈥榙iv鈥欍 | CBaseListView |
template | string | 瑙嗗浘甯冨眬鐨勬ā鏉裤 鍙敤鐨勬爣璁版湁锛歿summary}锛寋items}鍜寋pager}銆 瀹冧滑灏嗚鐩稿簲鐨勬憳瑕侊紝鏁版嵁鍒楄〃鍜屽垎椤垫浛鎹€ | CBaseListView |
viewPath | string | 杩斿洖鍖呭惈姝ゅ井浠舵墍闇鐨勮鍥炬枃浠剁殑璺緞銆 | CWidget |
鍏叡鏂规硶
鏂规硶 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|
__call() | 濡傛灉绫讳腑娌℃湁璋冪殑鏂规硶鍚嶏紝鍒欒皟鐢ㄨ繖涓柟娉曘 | CComponent |
__construct() | 鏋勯犲櫒銆 | CWidget |
__get() | 杩斿洖涓涓睘鎬у笺佷竴涓簨浠跺鐞嗙▼搴忓垪琛ㄦ垨涓涓涓哄悕绉般 | CComponent |
__isset() | 妫鏌ヤ竴涓睘鎬ф槸鍚︿负null銆 | CComponent |
__set() | 璁剧疆涓涓粍浠剁殑灞炴у笺 | CComponent |
__unset() | 璁剧疆涓涓粍浠剁殑灞炴т负null銆 | CComponent |
actions() | 杩斿洖姝idget浣跨敤鐨勫姩浣滅殑鍒楄〃銆 | CWidget |
asa() | 杩斿洖杩欎釜鍚嶅瓧鐨勮涓哄璞° | CComponent |
attachBehavior() | 闄勫姞涓涓涓哄埌缁勪欢銆 | CComponent |
attachBehaviors() | 闄勫姞涓涓涓哄垪琛ㄥ埌缁勪欢銆 | CComponent |
attachEventHandler() | 涓轰簨浠堕檮鍔犱竴涓簨浠跺鐞嗙▼搴忋 | CComponent |
beginCache() | Begins fragment caching. | CBaseController |
beginClip() | Begins recording a clip. | CBaseController |
beginContent() | Begins the rendering of content that is to be decorated by the specified view. | CBaseController |
beginWidget() | Creates a widget and executes it. | CBaseController |
canGetProperty() | 纭畾灞炴ф槸鍚﹀彲璇汇 | CComponent |
canSetProperty() | 纭畾灞炴ф槸鍚﹀彲鍐欍 | CComponent |
createWidget() | Creates a widget and initializes it. | CBaseController |
detachBehavior() | 浠庣粍浠朵腑鍒嗙涓涓涓恒 | CComponent |
detachBehaviors() | 浠庣粍浠朵腑鍒嗙鎵鏈夎涓恒 | CComponent |
detachEventHandler() | 鍒嗙涓涓瓨鍦ㄧ殑浜嬩欢澶勭悊绋嬪簭銆 | CComponent |
disableBehavior() | 绂佺敤涓涓檮鍔犺涓恒 | CComponent |
disableBehaviors() | 绂佺敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 | CComponent |
enableBehavior() | 鍚敤涓涓檮鍔犺涓恒 | CComponent |
enableBehaviors() | 鍚敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 | CComponent |
endCache() | Ends fragment caching. | CBaseController |
endClip() | Ends recording a clip. | CBaseController |
endContent() | Ends the rendering of content. | CBaseController |
endWidget() | Ends the execution of the named widget. | CBaseController |
evaluateExpression() | 璁$畻涓涓狿HP琛ㄨ揪寮忥紝鎴栨牴鎹粍浠朵笂涓嬫枃鎵ц鍥炶皟銆 | CComponent |
getController() | 杩斿洖姝ゅ井浠舵墍灞炵殑鎺у埗鍣ㄣ | CWidget |
getEventHandlers() | 杩斿洖涓涓簨浠剁殑闄勫姞澶勭悊绋嬪簭鍒楄〃銆 | CComponent |
getId() | 杩斿洖姝ゅ井浠剁殑ID銆傚鏋滈渶瑕佺殑璇濓紝灏嗙敓浜т竴涓柊鐨処D骞跺皢鍏惰繑鍥炪 | CWidget |
getOwner() | 杩斿洖姝ゅ井浠剁殑鎵鏈夎呮垨鍒涘缓鑰呫 | CWidget |
getViewFile() | 鏍规嵁瑙嗗浘鍚嶆煡鎵捐鍥炬枃浠躲 | CWidget |
getViewPath() | 杩斿洖鍖呭惈姝ゅ井浠舵墍闇鐨勮鍥炬枃浠剁殑璺緞銆 | CWidget |
hasEvent() | 纭畾涓涓簨浠舵槸鍚﹀畾涔夈 | CComponent |
hasEventHandler() | 妫鏌ヤ簨浠舵槸鍚︽湁闄勫姞鐨勫鐞嗙▼搴忋 | CComponent |
hasProperty() | 纭畾灞炴ф槸鍚﹁瀹氫箟銆 | CComponent |
init() | 鍒濆鍖栭儴浠躲 | CBaseListView |
raiseEvent() | 鍙戣捣涓涓簨浠躲 | CComponent |
registerClientScript() | 娉ㄥ唽蹇呴渶鐨勫鎴风鑴氭湰銆 | CBaseListView |
render() | 娓叉煋涓涓鍥俱 | CWidget |
renderContent() | 娓叉煋瑙嗗浘鐨勪富瑕佸唴瀹广 | CBaseListView |
renderEmptyText() | 娓叉煋鏁版嵁涓虹┖鏃舵樉绀虹殑鍐呭銆 | CBaseListView |
renderFile() | Renders a view file. | CBaseController |
renderInternal() | Renders a view file. | CBaseController |
renderItems() | 娓叉煋瑙嗗浘鐨勫垪琛ㄥ唴瀹广 | CBaseListView |
renderKeys() | 娓叉煋涓涓殣钘忔爣绛炬暟鎹敭鍊笺 | CBaseListView |
renderPager() | 娓叉煋鍒嗛〉銆 | CBaseListView |
renderSummary() | 娓叉煋鎽樿鍐呭銆 | CBaseListView |
run() | 娓叉煋瑙嗗浘銆 | CBaseListView |
setId() | 璁剧疆姝ゅ井浠剁殑ID銆 | CWidget |
widget() | Creates a widget and executes it. | CBaseController |
灞炴ц缁
瑙嗗浘闇瑕佹樉绀虹殑鏁版嵁婧愩
褰dataProvider涓虹┖鏃舵樉绀虹殑鍐呭銆
鏄惁鍚敤鍒嗛〉銆傛敞鎰忥細褰IDataProvider::pagination鐨勫睘鎬 dataProvider涓篺alse鏃跺垯姝ゅ睘鎬т负false锛屽嵆涓嶅惎鐢ㄥ垎椤点 褰撳惎鐢ㄥ垎椤垫椂锛岄〉鐮佷細鍦ㄨ鍥句腑鏄剧ず銆 榛樿涓簍rue銆
鏄惁鍚敤鎺掑簭銆傛敞鎰忥細褰IDataProvider::sort鐨勫睘鎬 dataProvider涓篺alse鏃跺垯姝ゅ睘鎬т负false锛屽嵆涓嶅惎鐢ㄦ帓搴忋 褰撳惎鐢ㄦ帓搴忔椂锛岀偣鍑诲垪鍚嶅氨鍙寜璇ュ垪鎺掑簭銆 榛樿涓簍rue銆
鍙傝
- sortableAttributes
閮ㄤ欢鐨凥TML灞炴с
鏄剧ず鍚勬潯鏁版嵁鐨勫鍣ㄧ殑CSS绫汇傞粯璁や负鈥榠tems鈥欍
浣跨敤AJAX鍔犺浇鏁版嵁鏃惰繘搴︽潯瀹瑰櫒鐨凜SS绫 榛樿涓衡榣oading鈥欍
pager 鐨勯厤缃俊鎭傞粯璁や负array('class'=>'CLinkPager')
.
鍙傝
鏄剧ず椤电爜鐨勫鍣ㄧ殑CSS绫汇傞粯璁や负鈥榩ager鈥欍
鏄剧ず鎽樿鐨勫鍣ㄧ殑CSS绫汇傞粯璁や负鈥榮ummary鈥欍
鎽樿鍐呭浣跨敤鐨勬ā鏉裤 涓嬮潰鐨勮繖浜涙爣璁板皢浼氳瀵瑰簲鐨勫唴瀹规浛鎹細
- {start}: 褰撳墠鏄剧ず鐨勮捣濮嬭鏁 (浠1寮濮)
- {end}: 褰撳墠鏄剧ず鐨勭粨鏉熻鏁 (浠1寮濮)
- {count}: 鎬昏鏁
- {page}: 褰撳墠鏄剧ず鐨勯〉鐮侊紝鑷 1.1.3 鐗堟湰鍚庡彲鐢
- {pages}: 鎬婚〉鏁帮紝鑷 1.1.3 鐗堟湰鍚庡彲鐢
瑙嗗浘瀹瑰櫒鐨勬爣绛俱傞粯璁や负鈥榙iv鈥欍
瑙嗗浘甯冨眬鐨勬ā鏉裤 鍙敤鐨勬爣璁版湁锛歿summary}锛寋items}鍜寋pager}銆 瀹冧滑灏嗚鐩稿簲鐨勬憳瑕侊紝鏁版嵁鍒楄〃鍜屽垎椤垫浛鎹€
鏂规硶璇︾粏
public void init()
|
public function init()
{
if($this->dataProvider===null)
throw new CException(Yii::t('zii','The "dataProvider" property cannot be empty.'));
$this->dataProvider->getData();
$this->htmlOptions['id']=$this->getId();
if($this->enableSorting && $this->dataProvider->getSort()===false)
$this->enableSorting=false;
if($this->enablePagination && $this->dataProvider->getPagination()===false)
$this->enablePagination=false;
}
鍒濆鍖栭儴浠躲 姝ゆ柟娉曞皢鍒濆鍖栨墍闇鐨勫睘鎬у煎拰瀹炰緥鍖栫殑columns瀵硅薄銆
public void registerClientScript()
|
娉ㄥ唽蹇呴渶鐨勫鎴风鑴氭湰銆 姝ゆ柟娉曞湪run涓璋冪敤銆 瀛愮被鍙互閲嶅啓姝ゆ柟娉曟潵娉ㄥ唽鑷畾涔夌殑瀹㈡埛绔剼鏈
public void renderContent()
|
public function renderContent()
{
ob_start();
echo preg_replace_callback("/{(\w+)}/",array($this,'renderSection'),$this->template);
ob_end_flush();
}
娓叉煋瑙嗗浘鐨勪富瑕佸唴瀹广 涓昏鍐呭鍒嗛儴鍒嗘覆鏌擄紝濡傛憳瑕併佸垪琛ㄣ佸垎椤点 姣忎釜閮ㄥ垎浣跨敤鍛藉悕鏍煎紡涓"renderXyz"鐨勬柟娉曟覆鏌擄紝鍏朵腑"Xyz"涓烘閮ㄥ垎鐨勫悕绉般 娓叉煋鍚庣殑缁撴灉灏嗘浛鎹㈠湪template涓悇閮ㄥ垎鐨勭浉搴旀爣璁般
public void renderEmptyText()
|
public function renderEmptyText()
{
$emptyText=$this->emptyText===null ? Yii::t('zii','No results found.') : $this->emptyText;
echo CHtml::tag('span', array('class'=>'empty'), $emptyText);
}
娓叉煋鏁版嵁涓虹┖鏃舵樉绀虹殑鍐呭銆
abstract public void renderItems()
|
娓叉煋瑙嗗浘鐨勫垪琛ㄥ唴瀹广 姣忔潯鏁版嵁瀵瑰簲涓涓暟鎹ā鍨嬨 瀛愮被搴旈噸鍐欐鏂规硶鑷畾涔夋樉绀哄唴瀹广
public void renderKeys()
|
public function renderKeys()
{
echo CHtml::openTag('div',array(
'class'=>'keys',
'style'=>'display:none',
'title'=>Yii::app()->getRequest()->getUrl(),
));
foreach($this->dataProvider->getKeys() as $key)
echo "<span>".CHtml::encode($key)."</span>";
echo "</div>\n";
}
娓叉煋涓涓殣钘忔爣绛炬暟鎹敭鍊笺
public void renderPager()
|
public function renderPager()
{
if(!$this->enablePagination)
return;
$pager=array();
$class='CLinkPager';
if(is_string($this->pager))
$class=$this->pager;
else if(is_array($this->pager))
{
$pager=$this->pager;
if(isset($pager['class']))
{
$class=$pager['class'];
unset($pager['class']);
}
}
$pager['pages']=$this->dataProvider->getPagination();
if($pager['pages']->getPageCount()>1)
{
echo '<div class="'.$this->pagerCssClass.'">';
$this->widget($class,$pager);
echo '</div>';
}
else
$this->widget($class,$pager);
}
娓叉煋鍒嗛〉銆
protected string renderSection(array $matches)
| ||
$matches | array | 鍖归厤椤癸紝$matches[0]浠h〃鏁翠釜鍗犱綅绗︼紝 $matches[1]鍖呭惈鍖归厤鐨勫崰浣嶇鐨勫悕绉般 |
{return} | string | 璇ラ儴鍒嗙殑娓叉煋缁撴灉 |
protected function renderSection($matches)
{
$method='render'.$matches[1];
if(method_exists($this,$method))
{
$this->$method();
$html=ob_get_contents();
ob_clean();
return $html;
}
else
return $matches[0];
}
娓叉煋鎸囧畾閮ㄥ垎鐨勫唴瀹广 姝ゆ柟娉曞湪renderContent鎵ц鏃舵覆鏌template涓殑姣忎竴涓爣璁般 娓叉煋鍚庣殑鍐呭灏嗘浛鎹㈡爣璁般
public void renderSummary()
|
public function renderSummary()
{
if(($count=$this->dataProvider->getItemCount())<=0)
return;
echo '<div class="'.$this->summaryCssClass.'">';
if($this->enablePagination)
{
if(($summaryText=$this->summaryText)===null)
$summaryText=Yii::t('zii','Displaying {start}-{end} of {count} result(s).');
$pagination=$this->dataProvider->getPagination();
$total=$this->dataProvider->getTotalItemCount();
$start=$pagination->currentPage*$pagination->pageSize+1;
$end=$start+$count-1;
if($end>$total)
{
$end=$total;
$start=$end-$count+1;
}
echo strtr($summaryText,array(
'{start}'=>$start,
'{end}'=>$end,
'{count}'=>$total,
'{page}'=>$pagination->currentPage+1,
'{pages}'=>$pagination->pageCount,
));
}
else
{
if(($summaryText=$this->summaryText)===null)
$summaryText=Yii::t('zii','Total {count} result(s).');
echo strtr($summaryText,array(
'{count}'=>$count,
'{start}'=>1,
'{end}'=>$count,
'{page}'=>1,
'{pages}'=>1,
));
}
echo '</div>';
}
娓叉煋鎽樿鍐呭銆
public void run()
|
public function run()
{
$this->registerClientScript();
echo CHtml::openTag($this->tagName,$this->htmlOptions)."\n";
$this->renderContent();
$this->renderKeys();
echo CHtml::closeTag($this->tagName);
}
娓叉煋瑙嗗浘銆 姝ゆ柟娉曚负鏁翠釜娓叉煋鐨勫叆鍙c 瀛愮被涓鑸彧闇閲嶅啓renderContent鏂规硶銆