Ballly
@Ballly

YII2 вывод массива в yii2-widget-select2?

Всем здравствуйте! Подскажите как получить массив и вывести его в yii2-widget-select2? В текущий момент я получаю массив следующим образом:
$equipment = Type::find()->indexBy('id')->asArray()->all();
$result = ArrayHelper::map($equipment, 'id', 'name', 'parent_id');

Но данный метод не устраивает тем, что категория в выпадающем списке отображается в виде id, а необходимо чтобы категория выводилась именем. Вопрос в том, как написать функцию получения массива, где вместо id категории будет ее имя?
5bf1ad56339a7572700692.png5bf1b0056ee7c476350643.png
  • Вопрос задан
  • 261 просмотр
Решения вопроса 1
@Arik
можно попробовать обойти до как нибудь
$equipment = Type::find()->indexBy('id')->asArray()->all();
$equipment = array_map(function ($row) use ($equipment) {
    $row['parent_name'] = isset($equipment[$row['parent_id']]) ? $equipment[$row['parent_id']]['name'] : null;
    return $row;
}, $equipment);
$equipment = array_filter($equipment, function ($row) {
    return $row['parent_name'];
});
$result = ArrayHelper::map($equipment, 'id', 'name', 'parent_name');


up:
или лучше попробовать
$equipment = Type::find()->indexBy('id')->asArray()->all();
$equipment = array_map(function ($row) use ($equipment) {
    $row['parent_name'] = isset($equipment[$row['parent_id']]) ? $equipment[$row['parent_id']]['name'] : $row['parent_id'];
    return $row;
}, $equipment);
$result = ArrayHelper::map($equipment, 'id', 'name', 'parent_name');
if(isset($result[0])) {
    unset($result[0]);
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ballly
@Ballly Автор вопроса
Спасибо! Ваш вариант кода идеально подошел для решения поставленной задачи! После применения кода, остался только один вопрос, сейчас в селект выводятся все категории, включая что родительские категории выводятся в отдельной категории "0". Не подскажите, как убрать их чтобы не выводились отдельным массивом "0", но при этом не пропали как подзаголовки категорий устройств?
5bf1be8aeee98839280765.png
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы