如何在yii2 gridview中显示复选框而不是bool变量?

时间:2018-08-19 13:22:20

标签: gridview checkbox yii2

我想在yii2 gridview中显示一些行。列的类型之一是mysql表中的BIT(correspondingAuthorFlag)。 现在我想显示复选框(选中1,未选中0)而不是它们的值。因此,我编写了以下代码:

  $widget = Yii::createObject([
                'class' => 'yii\grid\GridView',
                'dataProvider' => $dataprovider,
                'columns' => [
                    'PersonName',
                    'PersonType',
                    'order',
                    [
                     'value' => 'correspondingAuthorFlag',
                     'class' => 'yii\grid\CheckboxColumn',
                    ],
                ],

            ]
        );

但是会引发错误。我该怎么办?

2 个答案:

答案 0 :(得分:1)

您可以使用checkboxOptions

echo GridView::widget([
    'dataProvider' => $dataprovider,
    'columns' => [
        'PersonName',
        'PersonType',
        'order',
        [
            'class' => 'yii\grid\CheckboxColumn',
            'checkboxOptions' => function($model) {
                return ['checked' => $model->correspondingAuthorFlag == 1 ? true : false];
            }
        ],
    ],
]);

答案 1 :(得分:0)

我已经找到并完成了以下代码:

     $widget = Yii::createObject([
                'class' => 'yii\grid\GridView',
                'dataProvider' => $dataprovider,
                'columns' => [
                    'PersonName',
                    'PersonType',
                    'order',

                    ['attribute' => 'correspondingAuthorFlag',
                        'value' => function ($data) {
                            if ($data['correspondingAuthorFlag'] == '1') {
                              return Html::checkbox('correspondingAuthorFlag',1,['disabled' => true]);
                            } else {
                                return Html::checkbox('correspondingAuthorFlag',0,['disabled' => true]);

                            }

                        }
                        , 'format' => 'raw'
                    ]

                ],

            ]
        );

使用这种方式,我们可以将任何html控件添加到gridview。 :)