如何在Yi2 gridview中显示复选框而不是布尔变量?

如何在Yi2 gridview中显示复选框而不是布尔变量?,gridview,checkbox,yii2,Gridview,Checkbox,Yii2,我想在yii2gridview中显示一些行。列的类型之一是mysql表中的位(对应的AuthorFlag)。 现在我想显示复选框(选中1,未选中0),而不是它们的值。为此,我编写了以下代码: $widget = Yii::createObject([ 'class' => 'yii\grid\GridView', 'dataProvider' => $dataprovider, 'co

我想在yii2gridview中显示一些行。列的类型之一是mysql表中的位(
对应的AuthorFlag
)。 现在我想显示复选框(选中1,未选中0),而不是它们的值。为此,我编写了以下代码:

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

            ]
        );

但它抛出了一个错误。如何操作?

您可以使用
checkboxOptions

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

我找到了它,并按照以下代码进行了操作:

     $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'
                    ]

                ],

            ]
        );

通过这种方式,我们可以向gridview添加任何html控件。:)

显示错误消息您希望如何处理这些复选框?它们应该是可编辑的吗?是否要将这些值用于表单提交?为什么不返回['checked'=>$model->correspondingAuthorFlag==1]@kusanagi这样做很好,我添加了完整的语句以提高可读性