如何在Yi2 gridview中显示复选框而不是布尔变量?
我想在yii2gridview中显示一些行。列的类型之一是mysql表中的位(如何在Yi2 gridview中显示复选框而不是布尔变量?,gridview,checkbox,yii2,Gridview,Checkbox,Yii2,我想在yii2gridview中显示一些行。列的类型之一是mysql表中的位(对应的AuthorFlag)。 现在我想显示复选框(选中1,未选中0),而不是它们的值。为此,我编写了以下代码: $widget = Yii::createObject([ 'class' => 'yii\grid\GridView', 'dataProvider' => $dataprovider, 'co
对应的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这样做很好,我添加了完整的语句以提高可读性