yii2:drop-多个值在一行中的向下列表
yii2:drop-down list for multiple values concat in one line
对于我的 drop-down 列表,我正在使用此代码。
<?= $form->field($medicinerequest, '[' . $id . ']' . 'medicine_name')
->DropDownList(ArrayHelper::map(\app\models\Medicine::find()
->asArray()->all(), 'id', 'medicine_name','medicine_id' ),
[ 'prompt' => 'Please Select' ])?>
我得到如图所示的 drop-down 列表。但我希望它在一行中用连字符 (-) 连接起来。我该怎么做?
好的,我找到了解决方案。如果有更好的解决方案我会欢迎的
我在模型中创建了一个函数Medicine.php
public function getMedicineName(){
return $this->medicine_name .'-'.$this->medicine_id;
}
然后在 arrayhelper 中用 medicineName 替换 medicine_name 现在我得到了我要找的东西。
ArrayHelper::map($array, $from, $to, $group)
uses ArrayHelper::getValue()
得到$from
、$to
和$group
的值。 ArrayHelper::getValue()
允许你传递闭包。
The anonymous function signature should be: function($array, $defaultValue)
.
因此您可以将 $to
设置为
ArrayHelper::map(
\app\models\Medicine::find()->asArray()->all(),
'id',
function($model) {
return $model['medicine_name'].'-'.$model['medicine_id'];
}
)
匿名函数可以是
function ($element) {
return $element['medicine_name'] . '-'. $element['medicine_id'];
}
您可以查看 here!
你可以在kartik Depdrop widget中设置$var
,这里的Dropdown widget也是一样的场景我们使用kartik depdrop widget
<?php
$var = ArrayHelper::map(Modelname::find()->where(['id' => $model->customer_id])->all(), 'id',
function ($model) {
return $model['id'] .' - '. $model['name'];
});
echo $form->field($model, 'id')->widget(DepDrop::classname(), [
'data' => $var,
'pluginOptions' => [
'depends' => [''],
'url' => Url::to(['#'])
]
]) ?>
或者,您可以从依赖下拉列表的控制器 esp 填充它;你 return key=>value 对与从模型字段连接的值。
echo "<option value='".$model->id."'>"
.$model->field1.' '
.$modle->field2.' '.$model->field3."</option>";
对于我的 drop-down 列表,我正在使用此代码。
<?= $form->field($medicinerequest, '[' . $id . ']' . 'medicine_name')
->DropDownList(ArrayHelper::map(\app\models\Medicine::find()
->asArray()->all(), 'id', 'medicine_name','medicine_id' ),
[ 'prompt' => 'Please Select' ])?>
我得到如图所示的 drop-down 列表。但我希望它在一行中用连字符 (-) 连接起来。我该怎么做?
好的,我找到了解决方案。如果有更好的解决方案我会欢迎的
我在模型中创建了一个函数Medicine.php
public function getMedicineName(){
return $this->medicine_name .'-'.$this->medicine_id;
}
然后在 arrayhelper 中用 medicineName 替换 medicine_name 现在我得到了我要找的东西。
ArrayHelper::map($array, $from, $to, $group)
uses ArrayHelper::getValue()
得到$from
、$to
和$group
的值。 ArrayHelper::getValue()
允许你传递闭包。
The anonymous function signature should be:
function($array, $defaultValue)
.
因此您可以将 $to
设置为
ArrayHelper::map(
\app\models\Medicine::find()->asArray()->all(),
'id',
function($model) {
return $model['medicine_name'].'-'.$model['medicine_id'];
}
)
匿名函数可以是
function ($element) {
return $element['medicine_name'] . '-'. $element['medicine_id'];
}
您可以查看 here!
你可以在kartik Depdrop widget中设置$var
,这里的Dropdown widget也是一样的场景我们使用kartik depdrop widget
<?php
$var = ArrayHelper::map(Modelname::find()->where(['id' => $model->customer_id])->all(), 'id',
function ($model) {
return $model['id'] .' - '. $model['name'];
});
echo $form->field($model, 'id')->widget(DepDrop::classname(), [
'data' => $var,
'pluginOptions' => [
'depends' => [''],
'url' => Url::to(['#'])
]
]) ?>
或者,您可以从依赖下拉列表的控制器 esp 填充它;你 return key=>value 对与从模型字段连接的值。
echo "<option value='".$model->id."'>"
.$model->field1.' '
.$modle->field2.' '.$model->field3."</option>";