如何在yii2中组合select2上的两个属性
我想把kodepos和kabupaten归为一个下拉列表。数据库中包括kodepos和kabupaten属性。有人能帮我吗?多谢各位如何在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
<?= $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
],
]);
?>