Задать вопрос
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
  • Вопрос задан
  • 280 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Onskills
    PHP: базовый курс
    1 месяц
    Далее
  • teamcoding
    TC200PY Разработка PHP веб-приложений на Yii2. Шаблон приложения advanced
    3 месяца
    Далее
  • FructCode
    Yii2 Фреймворк
    2 месяца
    Далее
Решения вопроса 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
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы