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

bakd9h0s  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(120)

我想把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
    ],
    ]);
?>
3j86kqsm

3j86kqsm1#

您需要更改ArrayHelper::map(),以将closure用于第三个参数或$to参数,并根据需要返回两个连接的字段。
字段名称不清楚,您希望在第一个和第二个下拉列表中显示为文本,因此我假设整数值来自id字段。
我将添加一段代码,该代码将idkodepos连接显示为第一个下拉列表的文本,并将idkabupaten连接显示为第二个下拉列表的文本。

<?= $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
    ],
    ]);
?>

编辑:

您希望将kodeposkabupaten放在一个下拉列表中,而不是两个下拉列表,因此将代码更改为以下代码

<?= $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
    ],
    ]);
?>

相关问题