yii2 来自小部件菜单的动态子菜单


yii2 dynamic submenu from widget Menu

我需要了解的是,如果我声明我想要的值,为什么我总是得到具有 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;

}

希望你能理解我的解释。

因为这个:

$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;
}
foreach(Menu::getArrayMenu() as $item){
    $menuItems[] = $item;
}
public static function getArrayMenu(){
    $array[] = ['label' => 'Онас', 'url' => ['/site/about']];
    $array[] = ['label' => 'Контакты', 'url' => ['/site/contacts']];
    return $array;
}