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

Yii2 kartik select2 widget showing values too issue

我已经创建了一个 yii2 kartik select2 小部件来 select 多个车型,如下所示

<?= 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;
    }

它的工作perfect.But一个问题是there.please见下图

它也显示了价值,不仅 names.I 想显示只有制造商 names.How 才能做到这一点

因为您要将数组推送到 $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();
}