CButtonColumn

优质
小牛编辑
140浏览
2023-12-01
所有包 | 属性 | 方法
zii.widgets.grid
继承class CButtonColumn » CGridColumn » CComponent
源自1.1
版本$Id: CButtonColumn.php 3424 2011-10-24 20:13:19Z mdomba $
源码framework/zii/widgets/grid/CButtonColumn.php
CButtonColumn represents a grid view column that renders one or several buttons.

By default, it will display three buttons, "view", "update" and "delete", which triggers the corresponding actions on the model of the row.

By configuring buttons and template properties, the column can display other buttons and customize the display order of the buttons.

公共属性

隐藏继承属性

属性类型描述定义在
afterDeletestringa javascript function that will be invoked after the delete ajax call.CButtonColumn
buttonsarraythe configuration for additional buttons.CButtonColumn
cssClassExpressionstring计算PHP表达式中每一个数据元件, 其结果作为这个数据元件的CSS类名。在这个表达式中, 变量$row是行号(零基础); $data是该行的数据模型; $this是列的对象。CGridColumn
deleteButtonImageUrlstringthe image URL for the delete button.CButtonColumn
deleteButtonLabelstringthe label for the delete button.CButtonColumn
deleteButtonOptionsarraythe HTML options for the view button tag.CButtonColumn
deleteButtonUrlstringa PHP expression that is evaluated for every delete button and whose result is used as the URL for the delete button.CButtonColumn
deleteConfirmationstringthe confirmation message to be displayed when delete button is clicked.CButtonColumn
footerstring底部元件文本。请注意,它不会变成HTML编码。CGridColumn
footerHtmlOptionsarraythe HTML options for the footer cell tag.CButtonColumn
gridCGridView拥有此列的表格视图对象。CGridColumn
hasFooterboolean确定此列是否有底部元件。 这决定基于是否footer已设置。CGridColumn
headerstring头部元件文本。请注意,它不会变成HTML编码。CGridColumn
headerHtmlOptionsarraythe HTML options for the header cell tag.CButtonColumn
htmlOptionsarraythe HTML options for the data cell tags.CButtonColumn
idstringthe ID of this column.CGridColumn
templatestringthe template that is used to render the content in each data cell.CButtonColumn
updateButtonImageUrlstringthe image URL for the update button.CButtonColumn
updateButtonLabelstringthe label for the update button.CButtonColumn
updateButtonOptionsarraythe HTML options for the update button tag.CButtonColumn
updateButtonUrlstringa PHP expression that is evaluated for every update button and whose result is used as the URL for the update button.CButtonColumn
viewButtonImageUrlstringthe image URL for the view button.CButtonColumn
viewButtonLabelstringthe label for the view button.CButtonColumn
viewButtonOptionsarraythe HTML options for the view button tag.CButtonColumn
viewButtonUrlstringa PHP expression that is evaluated for every view button and whose result is used as the URL for the view button.CButtonColumn
visibleboolean此列是否可见。默认为true。CGridColumn

公共方法

隐藏继承方法

方法描述定义在
__call()如果类中没有调的方法名,则调用这个方法。CComponent
__construct()构造方法。CGridColumn
__get()返回一个属性值、一个事件处理程序列表或一个行为名称。CComponent
__isset()检查一个属性是否为null。CComponent
__set()设置一个组件的属性值。CComponent
__unset()设置一个组件的属性为null。CComponent
asa()返回这个名字的行为对象。CComponent
attachBehavior()附加一个行为到组件。CComponent
attachBehaviors()附加一个行为列表到组件。CComponent
attachEventHandler()为事件附加一个事件处理程序。CComponent
canGetProperty()确定属性是否可读。CComponent
canSetProperty()确定属性是否可写。CComponent
detachBehavior()从组件中分离一个行为。CComponent
detachBehaviors()从组件中分离所有行为。CComponent
detachEventHandler()分离一个存在的事件处理程序。CComponent
disableBehavior()禁用一个附加行为。CComponent
disableBehaviors()禁用组件附加的所有行为。CComponent
enableBehavior()启用一个附加行为。CComponent
enableBehaviors()启用组件附加的所有行为。CComponent
evaluateExpression()计算一个PHP表达式,或根据组件上下文执行回调。CComponent
getEventHandlers()返回一个事件的附加处理程序列表。CComponent
getHasFooter()返回确定此列是否有底部元件。 这决定基于是否footer已设置。CGridColumn
hasEvent()确定一个事件是否定义。CComponent
hasEventHandler()检查事件是否有附加的处理程序。CComponent
hasProperty()确定属性是否被定义。CComponent
init()Initializes the column.CButtonColumn
raiseEvent()发起一个事件。CComponent
renderDataCell()渲染一个数据元件。CGridColumn
renderFilterCell()渲染过滤器元件。CGridColumn
renderFooterCell()渲染底部元件。CGridColumn
renderHeaderCell()渲染头部元件。CGridColumn

受保护方法

隐藏继承方法

方法描述定义在
initDefaultButtons()Initializes the default buttons (view, update and delete).CButtonColumn
registerClientScript()Registers the client scripts for the button column.CButtonColumn
renderButton()Renders a link button.CButtonColumn
renderDataCellContent()Renders the data cell content.CButtonColumn
renderFilterCellContent()Renders the filter cell content.CGridColumn
renderFooterCellContent()Renders the footer cell content.CGridColumn
renderHeaderCellContent()Renders the header cell content.CGridColumn

属性详细

afterDelete 属性 public string $afterDelete;

a javascript function that will be invoked after the delete ajax call. This property is used only if $this->buttons['delete']['click'] is not set.

The function signature is function(link, success, data)

  • link references the delete link.
  • success status of the ajax call, true if the ajax call was successful, false if the ajax call failed.
  • data the data returned by the server in case of a successful call or XHR object in case of error.
Note that if success is true it does not mean that the delete was successful, it only means that the ajax call was successful.

Example:
 array(  class'=>'CButtonColumn',  'afterDelete'=>'function(link,success,data){ if(success) alert("Delete completed successfuly"); }',
 ),

buttons 属性 public array $buttons;

the configuration for additional buttons. Each array element specifies a single button which has the following format:

'buttonID' => array(  'label'=>'...',     // text label of the button  'url'=>'...',       // a PHP expression for generating the URL of the button  'imageUrl'=>'...',  // image URL of the button. If not set or false, a text link is used  'options'=>array(...), // HTML options for the button tag  'click'=>'...',     // a JS function to be invoked when the button is clicked  'visible'=>'...',   // a PHP expression for determining whether the button is visible
)
In the PHP expression for the 'url' option and/or 'visible' option, the variable $row refers to the current row number (zero-based), and $data refers to the data model for the row.

Note that in order to display these additional buttons, the template property needs to be configured so that the corresponding button IDs appear as tokens in the template.

deleteButtonImageUrl 属性 public string $deleteButtonImageUrl;

the image URL for the delete button. If not set, an integrated image will be used. You may set this property to be false to render a text link instead.

deleteButtonLabel 属性 public string $deleteButtonLabel;

the label for the delete button. Defaults to "Delete". Note that the label will not be HTML-encoded when rendering.

deleteButtonOptions 属性 public array $deleteButtonOptions;

the HTML options for the view button tag.

deleteButtonUrl 属性 public string $deleteButtonUrl;

a PHP expression that is evaluated for every delete button and whose result is used as the URL for the delete button. In this expression, the variable $row the row number (zero-based); $data the data model for the row; and $this the column object.

deleteConfirmation 属性 public string $deleteConfirmation;

the confirmation message to be displayed when delete button is clicked. By setting this property to be false, no confirmation message will be displayed. This property is used only if $this->buttons['delete']['click'] is not set.

footerHtmlOptions 属性 public array $footerHtmlOptions;

the HTML options for the footer cell tag.

headerHtmlOptions 属性 public array $headerHtmlOptions;

the HTML options for the header cell tag.

htmlOptions 属性 public array $htmlOptions;

the HTML options for the data cell tags.

template 属性 public string $template;

the template that is used to render the content in each data cell. These default tokens are recognized: {view}, {update} and {delete}. If the buttons property defines additional buttons, their IDs are also recognized here. For example, if a button named 'preview' is declared in buttons, we can use the token '{preview}' here to specify where to display the button.

updateButtonImageUrl 属性 public string $updateButtonImageUrl;

the image URL for the update button. If not set, an integrated image will be used. You may set this property to be false to render a text link instead.

updateButtonLabel 属性 public string $updateButtonLabel;

the label for the update button. Defaults to "Update". Note that the label will not be HTML-encoded when rendering.

updateButtonOptions 属性 public array $updateButtonOptions;

the HTML options for the update button tag.

updateButtonUrl 属性 public string $updateButtonUrl;

a PHP expression that is evaluated for every update button and whose result is used as the URL for the update button. In this expression, the variable $row the row number (zero-based); $data the data model for the row; and $this the column object.

viewButtonImageUrl 属性 public string $viewButtonImageUrl;

the image URL for the view button. If not set, an integrated image will be used. You may set this property to be false to render a text link instead.

viewButtonLabel 属性 public string $viewButtonLabel;

the label for the view button. Defaults to "View". Note that the label will not be HTML-encoded when rendering.

viewButtonOptions 属性 public array $viewButtonOptions;

the HTML options for the view button tag.

viewButtonUrl 属性 public string $viewButtonUrl;

a PHP expression that is evaluated for every view button and whose result is used as the URL for the view button. In this expression, the variable $row the row number (zero-based); $data the data model for the row; and $this the column object.

方法详细

init() 方法
public void init()
源码: framework/zii/widgets/grid/CButtonColumn.php#166 (显示) publicfunctioninit()
{
$this->initDefaultButtons();

foreach($this->buttonsas$id=>$button)
{
if(strpos($this->template,'{'.$id.'}')===false)
unset($this->buttons[$id]);
elseif(isset($button['click']))
{
if(!isset($button['options']['class']))
$this->buttons[$id]['options']['class']=$id;
if(strpos($button['click'],'js:')!==0)
$this->buttons[$id]['click']='js:'.$button['click'];
}
}

$this->registerClientScript();
}

Initializes the column. This method registers necessary client script for the button column.

initDefaultButtons() 方法
protected void initDefaultButtons()
源码: framework/zii/widgets/grid/CButtonColumn.php#189 (显示) protectedfunctioninitDefaultButtons()
{
if($this->viewButtonLabel===null)
$this->viewButtonLabel=Yii::t('zii','View');
if($this->updateButtonLabel===null)
$this->updateButtonLabel=Yii::t('zii','Update');
if($this->deleteButtonLabel===null)
$this->deleteButtonLabel=Yii::t('zii','Delete');
if($this->viewButtonImageUrl===null)
$this->viewButtonImageUrl=$this->grid->baseScriptUrl.'/view.png';
if($this->updateButtonImageUrl===null)
$this->updateButtonImageUrl=$this->grid->baseScriptUrl.'/update.png';
if($this->deleteButtonImageUrl===null)
$this->deleteButtonImageUrl=$this->grid->baseScriptUrl.'/delete.png';
if($this->deleteConfirmation===null)
$this->deleteConfirmation=Yii::t('zii','Areyousureyouwanttodeletethisitem?');

foreach(array('view','update','delete')as$id)
{
$button=array(
'label'=>$this->{$id.'ButtonLabel'},
'url'=>$this->{$id.'ButtonUrl'},
'imageUrl'=>$this->{$id.'ButtonImageUrl'},
'options'=>$this->{$id.'ButtonOptions'},
);
if(isset($this->buttons[$id]))
$this->buttons[$id]=array_merge($button,$this->buttons[$id]);
else
$this->buttons[$id]=$button;
}

if(!isset($this->buttons['delete']['click']))
{
if(is_string($this->deleteConfirmation))
$confirmation="if(!confirm(".CJavaScript::encode($this->deleteConfirmation)."))returnfalse;";
else
$confirmation='';

if(Yii::app()->request->enableCsrfValidation)
{
$csrfTokenName=Yii::app()->request->csrfTokenName;
$csrfToken=Yii::app()->request->csrfToken;
$csrf="nttdata:{'$csrfTokenName':'$csrfToken'},";
}
else
$csrf='';

if($this->afterDelete===null)
$this->afterDelete='function(){}';

$this->buttons['delete']['click']=<<<EOD
function(){
$confirmation
varth=this;
varafterDelete=$this->afterDelete;
$.fn.yiiGridView.update('{$this->grid->id}',{
type:'POST',
url:$(this).attr('href'),$csrf
success:function(data){
$.fn.yiiGridView.update('{$this->grid->id}');
afterDelete(th,true,data);
},
error:function(XHR){
returnafterDelete(th,false,XHR);
}
});
returnfalse;
}
EOD;
}
}

Initializes the default buttons (view, update and delete).

registerClientScript() 方法
protected void registerClientScript()
源码: framework/zii/widgets/grid/CButtonColumn.php#264 (显示) protectedfunctionregisterClientScript()
{
$js=array();
foreach($this->buttonsas$id=>$button)
{
if(isset($button['click']))
{
$function=CJavaScript::encode($button['click']);
$class=preg_replace('/s+/','.',$button['options']['class']);
$js[]="jQuery('#{$this->grid->id}a.{$class}').live('click',$function);";
}
}

if($js!==array())
Yii::app()->getClientScript()->registerScript(__CLASS__.'#'.$this->id,implode("n",$js));
}

Registers the client scripts for the button column.

renderButton() 方法
protected void renderButton(string $id, array $button, integer $row, mixed $data)
$idstringthe ID of the button
$buttonarraythe button configuration which may contain 'label', 'url', 'imageUrl' and 'options' elements. See buttons for more details.
$rowintegerthe row number (zero-based)
$datamixedthe data object associated with the row
源码: framework/zii/widgets/grid/CButtonColumn.php#309 (显示) protectedfunctionrenderButton($id,$button,$row,$data)
{
if(isset($button['visible'])&&!$this->evaluateExpression($button['visible'],array('row'=>$row,'data'=>$data)))
return;
$label=isset($button['label'])?$button['label']:$id;
$url=isset($button['url'])?$this->evaluateExpression($button['url'],array('data'=>$data,'row'=>$row)):'#';
$options=isset($button['options'])?$button['options']:array();
if(!isset($options['title']))
$options['title']=$label;
if(isset($button['imageUrl'])&&is_string($button['imageUrl']))
echoCHtml::link(CHtml::image($button['imageUrl'],$label),$url,$options);
else
echoCHtml::link($label,$url,$options);
}

Renders a link button.

renderDataCellContent() 方法
protected void renderDataCellContent(integer $row, mixed $data)
$rowintegerthe row number (zero-based)
$datamixedthe data associated with the row
源码: framework/zii/widgets/grid/CButtonColumn.php#287 (显示) protectedfunctionrenderDataCellContent($row,$data)
{
$tr=array();
ob_start();
foreach($this->buttonsas$id=>$button)
{
$this->renderButton($id,$button,$row,$data);
$tr['{'.$id.'}']=ob_get_contents();
ob_clean();
}
ob_end_clean();
echostrtr($this->template,$tr);
}

Renders the data cell content. This method renders the view, update and delete buttons in the data cell.