5

我在 CGridView yii 中遇到问题,我的退款字段显示 0/1,但我想在 0 时显示“是”,如果 1 显示“否”,而不使用任何第二个表。

$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'transaction-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
    'id',
    'member_id',
     array(
        'header' => 'MemberName',
        'name' => 'member_id',
        'value' => '$data->member->f_name'
    ),

    'refund',
    'band_id',

    array(
        'class'=>'CButtonColumn',
        'template'=>'{view}',
    ),
),

));

4

6 回答 6

19

其他两个答案都可以,但最干净的方法是:

'columns'=>array(
    'id',
    'member_id',

    ...

    'refund:boolean',
),

如果您像上面那样使用冒号,则会自动使用一堆 CGridView 列数据类型。更多信息在这里:https ://github.com/samdark/a-guide-to-yii-grids-lists-and-data-providers/blob/master/grid-columns.md

于 2012-07-17T02:05:44.233 回答
4
 array(
                    'name' => 'refund',
                    'header' => "Refund",
                    'value' => '$data->refund?Yii::t(\'app\',\'Yes\'):Yii::t(\'app\', \'No\')',
                    'filter' => array('0' => Yii::t('app', 'No'), '1' => Yii::t('app', 'Yes')),
                    'htmlOptions' => array('style' => "text-align:center;"),
              ),
于 2012-07-16T09:52:48.670 回答
4

希望这能解决您的问题。

用此代码替换“退款”。

 array(
            'header' => 'Refund',
            'name' => 'refund',
            'value' => '($data->refund == 0) ? "Yes" : "No"'
        ),
于 2012-07-16T14:00:34.903 回答
1

当显示布尔字段时,CGridView使用name:type:header创建列时的格式将类型指定为布尔值。例如

$this->widget('zii.widgets.grid.CGridView', array(
    ...
    'columns'=>array(
       'id',
       'refund:boolean',
),

如果要更改字段的显示方式,请CActiveForm更改渲染方法以使用复选框或下拉列表。我的首选是下拉列表,因为它为您提供了将值设置回 null 的选项。

$form->dropDownList($model,'refund', array(null=>"Not checked", 0=>"No", 1=>"Yes"));
于 2013-01-07T21:57:25.330 回答
0

快速修复:替换'refund',为:

        array(
        'name' => 'refund',
        'type' => 'raw',
        'value' => function($model){
            return $model->refund == 1 ? 'No' : 'Yes';
        }
    ),
于 2018-11-08T07:31:03.903 回答
-1

在视图名称 ADMIN.PHP

array('name'=>'status', 'header'=>'status', 'filter'=>array('1'=>'Inacive','2'=>'Active'), 'value'= >'($data->status=="1")?("Inacive"):("Active")' ),

于 2013-11-22T11:47:51.380 回答