динамическое подменю yii2 из меню виджетов

0

все, что мне нужно понять, поэтому я всегда получаю сгенерированный массив с индексом 0, если я объявляю значение, которое я хочу, чтобы этот результат

    Array
(
    [0] => Array
    (
        [label] => Prima categoria,
        [url] => Array
        (
            [0] => categorie/prima-categoria
        )
    )

[1] => Array
            (
    [label] => Seconda
    [url] => Array
               (
            [0] => categorie/seconda
               )
            [items] => Array
                  (
                    [label] => Seconda
                    [url] => Array
                  (
             [0] => categorie/seconda
            )
        )
    )
)

но сейчас:

   Array
(
    [0] => Array
        (
            [label] => Prima categoria,
            [url] => Array
                (
                    [0] => categorie/prima-categoria
                )
        )
    [1] => Array
        (
            [label] => Seconda
            [url] => Array
                (
                    [0] => categorie/seconda
                )
            // this is the problem --- why 0??
            [0] => Array
                (
                    [items] => Array
                        (
                            [label] => Seconda
                            [url] => Array
                                (
                                    [0] => categorie/seconda
                                )

                        )
                )
        )
    )

функция, которую я пытаюсь реализовать

function getItems() {
$items = [];
foreach (getLabelName() as $key) {
    $url = str_replace(' ', '-', $key->name);
    $subMenu = [];
    if (isset($key->id_sub_cat)) {
        $subMenu['items'] = ['label' => ucfirst($key->name), 'url' => ['category/' . $url . '']];
    }

    $items[] = ['label' => ucfirst($key->name), 'url' => ['category/' . $url . ''], $subMenu];
}
return $items;

}

Надеюсь, вы поймете мое объяснение.

Теги:
yii2

1 ответ

0
Лучший ответ

Из-за этого:

$items[] = ['label' => ucfirst($key->name), 'url' => ['category/' . $url . ''], $subMenu];

Что вы должны сделать, это

function getItems() {
$items = [];
foreach (getLabelName() as $key) {
    $url = str_replace(' ', '-', $key->name);
    $subMenu = [];
    if (isset($key->id_sub_cat)) {
        $subMenu[] = ['label' => ucfirst($key->name), 'url' => ['category/' . $url . '']];
    }

    $items[] = ['label' => ucfirst($key->name), 'url' => ['category/' . $url . ''], 'items' => $subMenu];
}
return $items;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню