$group в ArrayHelper::map

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
satik
Сообщения: 14
Зарегистрирован: 2014.10.31, 13:56

$group в ArrayHelper::map

Сообщение satik »

Приветствую!

И сразу к делу. В контроллере:

Код: Выделить всё

$category = Category::find()->where('parent_id>0')->all();
$sub_category = ArrayHelper::map($category, 'id', 'name', 'parent_id');
В форме:

Код: Выделить всё

<?= $form->field($model, 'category_id')->dropDownList($sub_category) ?>
В результате получается выпадающий список с категориями и подкатегориями. Но так как группирует по $parent_id, получается вот так:

ID родительской категории
---------Подкатегория 1
---------Подкатегория 2
ID следующей родительской категории
---------Подкатегория 1
---------Подкатегория 2
и т.д.

Как сделать чтобы вместо ID родительских категорий выводились их названия?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: $group в ArrayHelper::map

Сообщение zelenin »

Код: Выделить всё

$subCategory = ArrayHelper::map($category, 'id', 'name', function($item) {
    return $item->parent->name;
});
 
вместо атрибутов, можно передать колбэк, в который передается модель. У модели должна быть связь parent.

PS Почитайте psr-1/2 и юзайте его.
Ответить