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