CBaseListView

优质
小牛编辑
132浏览
2023-12-01
所有包 | 属性 | 方法
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
CBaseListView是CListView和CGridView的基类。

CBaseListView实现了一个部件渲染多个模型的功能。

公共属性

隐藏继承属性

属性类型描述定义在
actionPrefixstringactions的ID的前缀。 当微件在CController::actions中声明了 动作提供者,可以为其动作的ID指定前缀以区别 于别的微件或控制器。当微件用于控制器 的视图中时,必须配置同样的前缀。CWidget
controllerCController返回此微件所属的控制器。CWidget
dataProviderIDataProvider视图需要显示的数据源。CBaseListView
emptyTextstring当dataProvider为空时显示的内容。CBaseListView
enablePaginationboolean是否启用分页。注意:当IDataProvider::pagination的属性 dataProvider为false时则此属性为false,即不启用分页。 当启用分页时,页码会在视图中显示。 默认为true。CBaseListView
enableSortingboolean是否启用排序。注意:当IDataProvider::sort的属性 dataProvider为false时则此属性为false,即不启用排序。 当启用排序时,点击列名就可按该列排序。 默认为true。CBaseListView
htmlOptionsarray部件的HTML属性。CBaseListView
idstring返回此微件的ID。如果需要的话,将生产一个新的ID并将其返回。CWidget
itemsCssClassstring显示各条数据的容器的CSS类。默认为‘items’。CBaseListView
loadingCssClassstring使用AJAX加载数据时进度条容器的CSS类 默认为‘loading’。CBaseListView
ownerCBaseController返回此微件的所有者或创建者。CWidget
pagerarraypager 的配置信息。默认为array('class'=>'CLinkPager').CBaseListView
pagerCssClassstring显示页码的容器的CSS类。默认为‘pager’。CBaseListView
skinmixed微件使用的皮肤的名称。默认为“default”。 如果此属性设置为false,微件将不会有皮肤被使用。CWidget
summaryCssClassstring显示摘要的容器的CSS类。默认为‘summary’。CBaseListView
summaryTextstring摘要内容使用的模板。 下面的这些标记将会被对应的内容替换:
  • {start}: 当前显示的起始行数 (从1开始)
  • {end}: 当前显示的结束行数 (从1开始)
  • {count}: 总行数
  • {page}: 当前显示的页码,自 1.
CBaseListView
tagNamestring视图容器的标签。默认为‘div’。CBaseListView
templatestring视图布局的模板。 可用的标记有:{summary},{items}和{pager}。 它们将被相应的摘要,数据列表和分页替换。CBaseListView
viewPathstring返回包含此微件所需的视图文件的路径。CWidget

公共方法

隐藏继承方法

方法描述定义在
__call()如果类中没有调的方法名,则调用这个方法。CComponent
__construct()构造器。CWidget
__get()返回一个属性值、一个事件处理程序列表或一个行为名称。CComponent
__isset()检查一个属性是否为null。CComponent
__set()设置一个组件的属性值。CComponent
__unset()设置一个组件的属性为null。CComponent
actions()返回此widget使用的动作的列表。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()计算一个PHP表达式,或根据组件上下文执行回调。CComponent
getController()返回此微件所属的控制器。CWidget
getEventHandlers()返回一个事件的附加处理程序列表。CComponent
getId()返回此微件的ID。如果需要的话,将生产一个新的ID并将其返回。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

受保护方法

隐藏继承方法

方法描述定义在
renderSection()渲染指定部分的内容。CBaseListView

属性详细

dataProvider 属性 public IDataProvider $dataProvider;

视图需要显示的数据源。

emptyText 属性 public string $emptyText;

当dataProvider为空时显示的内容。

enablePagination 属性 public boolean $enablePagination;

是否启用分页。注意:当IDataProvider::pagination的属性 dataProvider为false时则此属性为false,即不启用分页。 当启用分页时,页码会在视图中显示。 默认为true。

enableSorting 属性 public boolean $enableSorting;

是否启用排序。注意:当IDataProvider::sort的属性 dataProvider为false时则此属性为false,即不启用排序。 当启用排序时,点击列名就可按该列排序。 默认为true。

参见

  • sortableAttributes
htmlOptions 属性 public array $htmlOptions;

部件的HTML属性。

itemsCssClass 属性 public string $itemsCssClass;

显示各条数据的容器的CSS类。默认为‘items’。

loadingCssClass 属性 (可用自 v1.1.1) public string $loadingCssClass;

使用AJAX加载数据时进度条容器的CSS类 默认为‘loading’。

pager 属性 public array $pager;

pager 的配置信息。默认为array('class'=>'CLinkPager').

参见

  • enablePagination
pagerCssClass 属性 public string $pagerCssClass;

显示页码的容器的CSS类。默认为‘pager’。

summaryCssClass 属性 public string $summaryCssClass;

显示摘要的容器的CSS类。默认为‘summary’。

summaryText 属性 public string $summaryText;

摘要内容使用的模板。 下面的这些标记将会被对应的内容替换:

  • {start}: 当前显示的起始行数 (从1开始)
  • {end}: 当前显示的结束行数 (从1开始)
  • {count}: 总行数
  • {page}: 当前显示的页码,自 1.1.3 版本后可用
  • {pages}: 总页数,自 1.1.3 版本后可用

tagName 属性 public string $tagName;

视图容器的标签。默认为‘div’。

template 属性 public string $template;

视图布局的模板。 可用的标记有:{summary},{items}和{pager}。 它们将被相应的摘要,数据列表和分页替换。

方法详细

init() 方法
public void init()
源码: framework/zii/widgets/CBaseListView.php#100 (显示) publicfunctioninit()
{
if($this->dataProvider===null)
thrownewCException(Yii::t('zii','The"dataProvider"propertycannotbeempty.'));

$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对象。

registerClientScript() 方法
public void registerClientScript()
源码: framework/zii/widgets/CBaseListView.php#274 (显示) publicfunctionregisterClientScript()
{
}

注册必需的客户端脚本。 此方法在run中被调用。 子类可以重写此方法来注册自定义的客户端脚本。

renderContent() 方法
public void renderContent()
源码: framework/zii/widgets/CBaseListView.php#138 (显示) publicfunctionrenderContent()
{
ob_start();
echopreg_replace_callback("/{(w+)}/",array($this,'renderSection'),$this->template);
ob_end_flush();
}

渲染视图的主要内容。 主要内容分部分渲染,如摘要、列表、分页。 每个部分使用命名格式为"renderXyz"的方法渲染,其中"Xyz"为此部分的名称。 渲染后的结果将替换在template中各部分的相应标记。

renderEmptyText() 方法
public void renderEmptyText()
源码: framework/zii/widgets/CBaseListView.php#170 (显示) publicfunctionrenderEmptyText()
{
$emptyText=$this->emptyText===null?Yii::t('zii','Noresultsfound.'):$this->emptyText;
echoCHtml::tag('span',array('class'=>'empty'),$emptyText);
}

渲染数据为空时显示的内容。

renderItems() 方法
abstract public void renderItems()
源码: framework/zii/widgets/CBaseListView.php#283 (显示) abstractpublicfunctionrenderItems();

渲染视图的列表内容。 每条数据对应一个数据模型。 子类应重写此方法自定义显示内容。

renderKeys() 方法
public void renderKeys()
源码: framework/zii/widgets/CBaseListView.php#179 (显示) publicfunctionrenderKeys()
{
echoCHtml::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";
}

渲染一个隐藏标签数据键值。

renderPager() 方法
public void renderPager()
源码: framework/zii/widgets/CBaseListView.php#239 (显示) publicfunctionrenderPager()
{
if(!$this->enablePagination)
return;

$pager=array();
$class='CLinkPager';
if(is_string($this->pager))
$class=$this->pager;
elseif(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'<divclass="'.$this->pagerCssClass.'">';
$this->widget($class,$pager);
echo'</div>';
}
else
$this->widget($class,$pager);
}

渲染分页。

renderSection() 方法
protected string renderSection(array $matches)
$matchesarray匹配项,$matches[0]代表整个占位符, $matches[1]包含匹配的占位符的名称。
{return}string该部分的渲染结果
源码: framework/zii/widgets/CBaseListView.php#153 (显示) protectedfunctionrenderSection($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中的每一个标记。 渲染后的内容将替换标记。

renderSummary() 方法
public void renderSummary()
源码: framework/zii/widgets/CBaseListView.php#194 (显示) publicfunctionrenderSummary()
{
if(($count=$this->dataProvider->getItemCount())<=0)
return;

echo'<divclass="'.$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;
}
echostrtr($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).');
echostrtr($summaryText,array(
'{count}'=>$count,
'{start}'=>1,
'{end}'=>$count,
'{page}'=>1,
'{pages}'=>1,
));
}
echo'</div>';
}

渲染摘要内容。

run() 方法
public void run()
源码: framework/zii/widgets/CBaseListView.php#120 (显示) publicfunctionrun()
{
$this->registerClientScript();

echoCHtml::openTag($this->tagName,$this->htmlOptions)."n";

$this->renderContent();
$this->renderKeys();

echoCHtml::closeTag($this->tagName);
}

渲染视图。 此方法为整个渲染的入口。 子类一般只需重写renderContent方法。