yii radioList 设置不可选

根据yii/helpers/BaseHtml.php第1041行

public static function radioList($name, $selection = null, $items = [], $options = [])
    {
        if (ArrayHelper::isTraversable($selection)) {
            $selection = array_map('strval', (array)$selection);
        }

        $formatter = ArrayHelper::remove($options, 'item');
        $itemOptions = ArrayHelper::remove($options, 'itemOptions', []);
        $encode = ArrayHelper::remove($options, 'encode', true);
        $separator = ArrayHelper::remove($options, 'separator', "\n");
        $tag = ArrayHelper::remove($options, 'tag', 'div');

        $hidden = '';
        if (isset($options['unselect'])) {
            // add a hidden field so that if the list box has no option being selected, it still submits a value
            $hiddenOptions = [];
            // make sure disabled input is not sending any value
            if (!empty($options['disabled'])) {
                $hiddenOptions['disabled'] = $options['disabled'];
            }
            $hidden =  static::hiddenInput($name, $options['unselect'], $hiddenOptions);
            unset($options['unselect'], $options['disabled']);
        }

        $lines = [];
        $index = 0;
        foreach ($items as $value => $label) {
            $checked = $selection !== null &&
                (!ArrayHelper::isTraversable($selection) && !strcmp($value, $selection)
                    || ArrayHelper::isTraversable($selection) && ArrayHelper::isIn((string)$value, $selection));
            if ($formatter !== null) {
                $lines[] = call_user_func($formatter, $index, $label, $name, $checked, $value);
            } else {
                $lines[] = static::radio($name, $checked, array_merge([
                    'value' => $value,
                    'label' => $encode ? static::encode($label) : $label,
                ], $itemOptions));
            }
            $index++;
        }
        $visibleContent = implode($separator, $lines);

        if ($tag === false) {
            return $hidden . $visibleContent;
        }

        return $hidden . static::tag($tag, $visibleContent, $options);
    }

可知, 选项中有一项itemOptions,用于设置radioList中各项的属性

使用时就可以设置disabled为true,使各个radio不可选

<?= $form->field($model, 'classify')->radioList([
        1 => Yii::t('backend', 'classify_1'), 
        2 => Yii::t('backend', 'classify_2'), 
        3 => Yii::t('backend', 'classify_3'), 
        4 => Yii::t('backend', 'classify_4'), 
        5 => Yii::t('backend', 'classify_5')
    ], ['itemOptions' => ['disabled' => true]]) ?>

 

但是,disabled有个问题,就是后端接收不到数据了,如果需要向后端传递已有数据,可以使用js控制rado不可选。

<?= $form->field($model, 'classify')->radioList([
        1 => Yii::t('backend', 'classify_1'), 
        2 => Yii::t('backend', 'classify_2'), 
        3 => Yii::t('backend', 'classify_3'), 
        4 => Yii::t('backend', 'classify_4'), 
        5 => Yii::t('backend', 'classify_5')
    ], ['itemOptions' => ['onclick' => "return false;"]]) ?>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值