Подтвердить что ты не робот

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

4b9b3361

Ответ 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'];
}

Вы можете проверить здесь!