Yii2: раскрывающийся список для нескольких значений concat в одной строке
для моего раскрывающегося списка Я использую этот код.
<?= $form->field($medicinerequest, '[' . $id . ']' . 'medicine_name')
->DropDownList(ArrayHelper::map(\app\models\Medicine::find()
->asArray()->all(), 'id', 'medicine_name','medicine_id' ),
[ 'prompt' => 'Please Select' ])?>
Я получаю раскрывающийся список, как на картинке. Но я хочу, чтобы он был объединен дефис (-) в одной строке. Как я могу это сделать?
![medicine-request-drop-down]()
Ответы
Ответ 1
ArrayHelper::map($array, $from, $to, $group)
использует ArrayHelper::getValue()
для получения значений $from
, $to
и $group
. ArrayHelper::getValue()
позволяет пройти закрытие.
Подпись анонимной функции должна быть: function($array, $defaultValue)
.
Как таковой вы можете установить $to
как
ArrayHelper::map(
\app\models\Medicine::find()->asArray()->all(),
'id',
function($model) {
return $model['medicine_name'].'-'.$model['medicine_id'];
}
)
Ответ 2
Хорошо, я нашел решение. Я буду рад, если будет лучшее решение.
Я создал функцию в модели Medicine.php
public function getMedicineName(){
return $this->medicine_name .'-'.$this->medicine_id;
}
а затем в arrayhelper заменили имя_даля на имя medicName и теперь я получаю то, что искал.
Ответ 3
Анонимной функцией может быть
function ($element) {
return $element['medicine_name'] . '-'. $element['medicine_id'];
}
Вы можете проверить здесь!