本篇我们介绍一种简单的Column,对,就是单选框。

RadioButtonColumn是一个比较简单的Column,我们需要注意3个属性,分别为

  • name
  • radioOptions
    • value
    • chekced

为了说的更清楚,我们先来看RadioButtonColumn的效果,如下图。

效果大家看到了,是一个单选组,只能一个被选中,因此RadioButtonColumn要帮我们完成几件事情

  • 在列中渲染出一个html的radio标签
  • 指定radio的名字
  • 指定哪个radio是被选状态

name和radioOptions(name、checked)属性就完成了上述需求,我们只需要如下做

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        'id',
        [
            'class' => 'yii\grid\RadioButtonColumn',
            'name'=>'abc',
            'radioOptions' => function ($model) {
                return [
                    'value' => $model->id,
                    'checked' => $model->id == 1
                ];
            }
        ]
    ]
]);?>

到此刻我想你已经看明白了吧。name="abc"是radio标签的name属性,而其他操作则放到了radioOptions中,它是一个匿名函数,有3个参数

function($model, $key, $index){

}

分别代表当前的记录、对应key、行号。

对于此匿名函数我们需要返回一个数组,其中的value代表每个radio值,而checked决定了哪个radio被选。

要说的是,name和radioOptions并不是必须项,你如果不写它们则name默认为radioButtonSelection值,radioOptions的配置中没有radio被checked,每个radio的value等于$key值(一般来说是ar对应记录的主键)。

最后要说,对于name属性你可以去设置,但是不能将其设置为空。

OK,这就是RadioButtonColumn的用法,下一篇将给大家说说CheckboxColumn列,你如果常做比如全选等需求,CheckboxColumn篇一定要看。