CGridView是Yii中的一个灵活的插件,例如它使用CButtonColumn来为每行生成按钮.在这里我们会介绍怎么根据需求自定义按钮.
默认按钮
默认情况下 CButtonColumn 包含三个按钮:{查看(view)},{更新(update)}和{删除(delete)}
自定义它们的外观和行为的最简单的方法是使用CButtonColumn的属性,如:
updateButtonImageUrl
updateButtonLabel
updateButtonOptions
此外:
- 只有删除(delete)按钮拥有
deleteConfirmation (string) 属性,它用作点击删除按钮后显示的自定义确认信息. - 在
xxxButtonUrl 属性的 PHP 表达式中 $row 表示行号(从0开始),$data 表示数据模型(model),$this 表示列对象. - 当你设置
xxxButtonImageUrl
更灵活的定制
通过上面的属性自定义多个按钮在代码中时很混乱的,通过
你可以通过一下设置模板(template)属性的方式来构建或移除按钮.'header'
array(
'class'=>'CButtonColumn',
'header' => '操作',
'template'=>'{delete}{update}',
),
在上例 CGridView 的按钮列中没有查看(view)按钮,而删除(delete)和更新(update)按钮为默认设置(删除按钮放到第一个位置).
隐藏按钮{update}{delete}
array(
'class'=>'CButtonColumn',
'deleteButtonOptions'=>array('style'=>'display:none'),
'updateButtonOptions'=>array('style'=>'display:none'),
'template'=>'{view}{update}{delete}',
),
同样你可以通过此属性添加新按钮
array
(
'class'=>'CButtonColumn',
'template'=>'{up}{down}{delete}',
)
对于新的按钮(当然已有的也一样)你必须指定外观和行为.CButtonColumn 的属性
你可以使用一下代码:
'buttonID' => array
(
'label'=>'...', //按钮的文本标签.
'url'=>'...', //使用 PHP 表达式得出按钮的 URL.
'imageUrl'=>'...', //按钮的图片路径.
'options'=>array(), //按钮的 HTML 选项.
'click'=>'...', //当点击按钮时调用的 javascript 函数
'visible'=>'...', //确定按钮是否显示的 PHP 表达式
)
请注意: 当使用文字链接时
'buttonID' => array
(
'label'=>'Text shown as alt text to image or as label to text link...',
'options'=>array('title'=>'Text shown as tooltip when user hovers image...'),
)
此外:
- 在
url 和 visible 属性的 PHP 表达式中 $row 表示行号(从0开始),$data 表示数据模型(model),$this 表示列对象. - 当你设置
xxxButtonImageUrl 的属性为空或 false 时,文本形式的链接将会代替图片显示.