我想在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',
],
],
]
);
但是会引发错误。我该怎么办?
答案 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。 :)