如何在yii2中组合select2上的两个属性

如何在yii2中组合select2上的两个属性,yii,yii2,yii2-advanced-app,Yii,Yii2,Yii2 Advanced App,我想把kodepos和kabupaten归为一个下拉列表。数据库中包括kodepos和kabupaten属性。有人能帮我吗?多谢各位 <?= $form->field($model, 'origin')->label('Origin')->widget(Select2::classname(), [ 'data' => ArrayHelper::map(MKota::find()->all(),'kodepos','kodepos'), 'th

我想把kodepos和kabupaten归为一个下拉列表。数据库中包括kodepos和kabupaten属性。有人能帮我吗?多谢各位

<?= $form->field($model, 'origin')->label('Origin')->widget(Select2::classname(), [
    'data' => ArrayHelper::map(MKota::find()->all(),'kodepos','kodepos'),
    'theme' => Select2::THEME_BOOTSTRAP,
    'language' => 'en',
    'options' => ['placeholder' => 'Pilih Kode Pos','required' => true,'style'=>'width:500px','maxlength' => true],
    'pluginOptions' => [
    'allowClear' => true
    ],
    ]);
?>

<?= $form->field($model, 'origin_name')->label('Origin')->widget(Select2::classname(), [
    'data' => ArrayHelper::map(MKota::find()->all(),'kabupaten','kabupaten'),
    'theme' => Select2::THEME_BOOTSTRAP,
    'language' => 'en',
    'options' => ['placeholder' => 'Pilih Kota Asal','required' => true,'style'=>'width:500px','maxlength' => true],
    'pluginOptions' => [
    'allowClear' => true
    ],
    ]);
?>

您需要更改
ArrayHelper::map()
以将
闭包
用于第三个参数或
$to
参数,并根据需要返回连接的两个字段

字段名不清楚您是否希望在第一个和第二个下拉列表中显示为文本,因此我假设整数值来自
id
字段

我将添加代码,该代码将显示连接为第一个下拉列表文本的
id
kodepos
,并将连接为第二个下拉列表文本的
id
kabupaten
。在代码中相应地更改它们

<?= $form->field($model, 'origin')->label('Origin')->widget(Select2::classname(), [
    'data' => ArrayHelper::map(MKota::find()->all(),'kodepos',function($model){return $model->id.$model->kodepos}),
    'theme' => Select2::THEME_BOOTSTRAP,
    'language' => 'en',
    'options' => ['placeholder' => 'Pilih Kode Pos','required' => true,'style'=>'width:500px','maxlength' => true],
    'pluginOptions' => [
    'allowClear' => true
    ],
    ]);
?>

<?= $form->field($model, 'origin_name')->label('Origin')->widget(Select2::classname(), [
    'data' => ArrayHelper::map(MKota::find()->all(),'kabupaten',function($model){return $model->id.$model->kabupaten}),
    'theme' => Select2::THEME_BOOTSTRAP,
    'language' => 'en',
    'options' => ['placeholder' => 'Pilih Kota Asal','required' => true,'style'=>'width:500px','maxlength' => true],
    'pluginOptions' => [
    'allowClear' => true
    ],
    ]);
?>

不清楚要在此处显示的
属性的名称是什么?您正在讨论两个不同的“选择”下拉列表,您需要添加要在第一个和第二个下拉列表中显示为文本的属性。对不起,我想在一个下拉列表中显示kodepos和kabupaten的属性您想要一个下拉列表而不是两个下拉列表吗?如果我得到正确答案,我已经在下面添加了一个答案,并进行了更新。有关正确的解决方案,请参见编辑部分。下拉列表是正确的。非常感谢。但数据库中只包含kodepos属性。我想在数据库中也输入kabupaten属性您是说要在数据库中为字段名
origin
保存
kodepos
kabupaten
@Herdiwell,将
$from
参数更改为使用
closure
,方法与我对
$to
所做的相同,并从
closure
返回所需字段@HerdiSorry,我不明白我说的是
ArrayHelper::map($array,$from,$to)
参数
$from
,你需要像
$to
参数一样更改它才能使用匿名函数@Herdi
<?= $form->field($model, 'origin')->label('Origin')->widget(Select2::classname(), [
    'data' => ArrayHelper::map(MKota::find()->all(),function($model){return $model->kodepos.$model->kabupaten}),function($model){return $model->kodepos.$model->kabupaten}),
    'theme' => Select2::THEME_BOOTSTRAP,
    'language' => 'en',
    'options' => ['placeholder' => 'Pilih Kode Pos','required' => true,'style'=>'width:500px','maxlength' => true],
    'pluginOptions' => [
    'allowClear' => true
    ],
    ]);
?>