'buttons'=>array(
'catalog'=>array(
'label'=>'Catalog tehnic',
'imageUrl' => strlen($data->catalog) > 1 ? Yii::app()->baseUrl . "/images/pdf.jpg" : Yii::app()->baseUrl . "/images/bw.png",
'url'=>'$data->catalog',
),
如果设置了值,我试图为cgridview buttoncollumn中的按钮设置不同的图标。 我已经尝试了不同的东西,因为所有相同的结果。
'imageUrl' => strlen($data->catalog) > 1 ? Yii::app()->baseUrl . "/images/pdf.jpg" : Yii::app()->baseUrl . "/images/bw.png",
'imageUrl' => isset($data->catalog) ? Yii::app()->baseUrl . "/images/pdf.jpg" : Yii::app()->baseUrl . "/images/bw.png",
'imageUrl' => !empty($data->catalog) ? Yii::app()->baseUrl . "/images/pdf.jpg" : Yii::app()->baseUrl . "/images/bw.png",
'imageUrl' => $data->catalog == '' ? Yii::app()->baseUrl . "/images/pdf.jpg" : Yii::app()->baseUrl . "/images/bw.png",
'imageUrl' => !$data->catalog ? Yii::app()->baseUrl . "/images/pdf.jpg" : Yii::app()->baseUrl . "/images/bw.png",
它非常令人沮丧,所以请帮助我。 thx提前
答案 0 :(得分:1)
我认为你可以这样做:
'imageUrl' => '!empty($data->catalog) ? Yii::app()->baseUrl . "/images/pdf.jpg" : Yii::app()->baseUrl . "/images/bw.png"'
或者你可以这样做:
'imageUrl' => function($data){
$url = '';
if(strlen($data->catalog > 1 ){
// do stuff
$url = $data->catalog; // assign url here
elseif(){
// implement your logcic here
}
elseif{
}
return $url;
}
答案 1 :(得分:1)
CButtonColumn
类渲染按钮默认生成zii.widgets.grid.CGridView
。
阅读课程代码,仅url
和visible
属性can be evaluated as PHP expression。
imageUrl
属性被处理为纯字符串(不是PHP表达式)。
我做了这个实验。建议非常受欢迎。我希望它对你有所帮助:
在protected/components
中创建一个新类:例如ExtCButtonColumn.php
。该类应继承类CButtonColumn
。
class ExtCButtonColumn extends CButtonColumn
{
...
}
在类代码中,重写渲染方法,保留原始概念并避免破坏其他CGridViews
上的现有或遗留实现:
protected function renderButton($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;
$imageUrl = isset($button['imageUrl']) ? $this->evaluateExpression($button['imageUrl'],array('data'=>$data,'row'=>$row)) : '';
if ( $imageUrl == '')
$imageUrl = isset($button['imageUrl']) ? $button['imageUrl'] : '#';
if( $imageUrl != '#' )
echo CHtml::link(CHtml::image($imageUrl,$label),$url,$options);
else
echo CHtml::link($label,$url,$options);
}
最后在您的视图代码中,在小部件定义($this->widget
数组)中,在columns
数组中,添加一个类似的按钮定义(这是一个带有自定义按钮的示例)。现在可以在所有imageUrl
属性中使用PHP表达式,如url
和visible
属性:
array(
'class' => 'ExtCButtonColumn',
'template' => '{process}{view}{update}{close}{back}',
'buttons' => array
(
'process' => array
(
'label' => 'Procesar',
'imageUrl' => 'strlen($data->catalog) > 1 ? Yii::app()->request->baseUrl . "/images/icons/myicon1.png" : Yii::app()->request->baseUrl . "/images/icons/myicon2.png"',
...
答案 2 :(得分:0)
我想你现在应该试试这个
'imageUrl' => 'strlen($data->catalog) > 1 ? Yii::app()->baseUrl . "/images/pdf.jpg" :
Yii::app()->baseUrl . "/images/bw.png"',
将代码包含在引号内,然后它应该适合你