在Yii2中使用带有ActiveField的radioList方法为每个单选框提供不同的选项

时间:2017-04-07 15:53:58

标签: php yii yii2

我在ActiveField小部件中使用radioList方法,我正在尝试找出如何为同一列表中的不同无线电盒设置不同的选项。

我有这个......

$form->field($model, 'some_question')->inline()->radioList(
    [
        1 => Yii::t('general', 'Yes'),
        0 => Yii::t('general', 'No')
    ],
    ['itemOptions' => ['value' => 1, 'data-foo' => 'bar']]
)->label(false);

但无论我在itemOptions设置的所有单选按钮上设置了什么 - 有没有办法为每个按钮设置不同的值?

1 个答案:

答案 0 :(得分:1)

为此使用可调用的item

$form->field($model, 'some_question')->inline()->radioList(
    [
        1 => Yii::t('general', 'Yes'),
        0 => Yii::t('general', 'No')
    ],
    ['item' => function ($index, $label, $name, $checked, $value) {
        switch ($value) {
            // different options per value
            case 1:
                $options = [
                    'data-foo' => 'bar'
                ];
                break;
            case 0:
                $options = [
                    'data-next' => 'smthng'
                ];
        }
        return \yii\bootstrap\Html::radio($name, $checked, array_merge($options, [
                'value' => $value,
                'label' => \yii\bootstrap\Html::encode($label),
            ]));
    }]
)->label(false);