繁体   English   中英

Yii2 kartik select2 小部件显示值也有问题

[英]Yii2 kartik select2 widget showing values too issue

我创建了一个 yii2 kartik select2 小部件来选择多个汽车模型,如下所示

<?= Select2::widget([
        'name' => 'drp-make',
        'data' => Car::getCarMakesEnglish(),
        'value' => explode(",",$model->drp_make),
        'options' => [
          'id'=>'drp-make',
          'placeholder' => 'All Makes',
          'multiple' => true
        ]
      ]); ?>

以及获取 select2 数据的函数,例如

 public static function getCarMakesEnglish(){
            $out=array();
        $makes=CarMakes::find()->select(['id','make_eng'])->all();
        foreach ($makes as $make) {
            array_push($out,array($make['id'] => $make['make_eng']));
        }
        return $out;
    }

它的工作完美。但有问题。请看下图

在此处输入图片说明

它不仅显示名称,还显示值。我只想显示名称。怎么做

因为您将数组推送到$out每个索引

array_push($out,array($make['id'] => $make['make_eng']))

您应该使用yii\\helpers\\ArrayHelper::map()代替为您执行此操作。 将您的函数getCarMakesEnglish()更改为以下内容

public static function getCarMakesEnglish()
{
    $makes = CarMakes::find()->select(['id', 'make_eng'])->all();
    return \yii\helpers\ArrayHelper::map($makes,'id','make_eng');
}

除了@MuhammadOmerAslam 回答之外,您还可以通过使用column()避免ArrayHelper::map()用于简单场景

public static function getCarMakesEnglish()
{
    return CarMakes::find()->select('make_eng')->indexBy('id')->column();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM