【问题标题】:How to display checkbox instead of bool variable in yii2 gridview?如何在 yii2 gridview 中显示复选框而不是 bool 变量?
【发布时间】:2019-01-25 20:03:10
【问题描述】:

我想在 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',
                    ],
                ],

            ]
        );

但它会引发错误。我该怎么做?

【问题讨论】:

  • 显示错误信息
  • 你想用这些复选框做什么?它们应该是可编辑的吗?您想将这些值用于表单提交吗?

标签: gridview checkbox yii2


【解决方案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];
            }
        ],
    ],
]);

【讨论】:

  • 为什么不返回 ['checked' => $model->correspondingAuthorFlag == 1];
  • @kusanagi 这样可以正常工作,我添加了完整的语句以提高可读性
【解决方案2】:

我已经通过这些代码找到并完成了:

     $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。 :)

【讨论】:

    猜你喜欢
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 2017-02-18
    • 2018-02-11
    • 2015-09-17
    • 2013-09-14
    • 2020-11-08
    • 2019-10-10
    相关资源
    最近更新 更多