Yii2 创建具有2个模型的动态SideNav小部件

Yii2 创建具有2个模型的动态SideNav小部件,yii2,Yii2,使用“SideNav小部件”和2种型号动态创建菜单的正确方法是什么: 类别(id,说明) 子类别(id、类别\u id、说明) 编辑 我所拥有的: $item = []; $Category = Category::find()->all(); foreach($Category as $model) { $item[] = ['label' => $model->description, 'url' => '#'];

使用“SideNav小部件”和2种型号动态创建菜单的正确方法是什么:

类别(id,说明)

子类别(id、类别\u id、说明)

编辑

我所拥有的:

   $item = [];
    $Category = Category::find()->all();
    foreach($Category as $model) {
        $item[] = ['label' => $model->description, 'url' => '#'];
        $Subcat = Subcat::find()->where("category_id=$model->id")->all();
        foreach($Subcat as $model2) {
            $item[] = ['label' => $model2->description, 'url' => '#'];
        }
    }

echo SideNav::widget([
    'items' => $item,

正如我所想:


你在找这样的东西吗

对于sideName示例,可以使用一个简单的示例

 $menuGiiItems[] = ['label' => Yii::t('app','Gii Generators'),  'icon' => 'th-list', 'url'=>Url::to(['/gii'])],

                ['label' => Yii::t('app','Generator 2'),  'url'=>Url::to(['/auth/item'])],
                ['label' => Yii::t('app','Generator 3'),  'url'=>Url::to(['auth/item-child'])],
                ['label' => Yii::t('app','Generator 4'), 'url'=>Url::to(['/auth/rule'])];
                $type = SideNav::TYPE_PRIMARY;
                $heading = '<i class="glyphicon glyphicon-education"></i> ' . Yii::t('app',' Gii - Development Automation ');
                echo SideNav::widget([
                    'type' => $type,
                    'encodeLabels' => false,
                    'heading' => $heading,
                    'items' =>$menuGiiItems,
                ]);
$menuGiiItems[]=['label'=>Yii::t('app','Gii Generators'),'icon'=>'th list','url'=>url::to(['/Gii']),
['label'=>Yii::t('app','Generator 2'),'url'=>url::to(['/auth/item']),
['label'=>Yii::t('app','Generator 3'),'url'=>url::to(['auth/item child']),
['label'=>Yii::t('app','Generator 4'),'url'=>url::to(['/auth/rule']);
$type=SideNav::type_PRIMARY;
$heading=''。Yii::t('app','Gii-开发自动化');
echo SideNav::小部件([
'type'=>$type,
“encodeLabels”=>false,
“标题”=>$heading,
“项目”=>$menuGiiItems,
]);
或具有嵌套项的更复杂的

        $menuItems[] = ['label' => 'DFenX - Yii2 User - '. Yii::t('app','Authentication manager'),  'icon' => 'user', 'items' => [
            ['label' => '/user/admin/index',       'icon' => 'list', 'url'=>Url::to(['/user/admin/index'])],
            ['label' => '/user/1 (view)', 'icon' =>'eye-open', 'url'=>Url::to(['/user/1'])],
            ['label' => 'Settings', 'icon' => 'cog', 'items' => [
                ['label' => '/user/settings', 'icon' => 'cog', 'url'=>Url::to(['/user/settings'])],
                ['label' => '/user/settings/profile',  'url'=>Url::to(['/user/settings/profile'])],
                ['label' => '/user/settings/account',  'url'=>Url::to(['user/settings/account'])],
                ['label' => '/user/settings/networks', 'url'=>Url::to(['/user/settings/networks'])],
            ]],
            ['label' => 'Registration', 'icon' => 'user', 'items' => [                                
                ['label' => '/user/registration/register', 'icon' => 'user', 'url'=>Url::to(['/user/registration/register'])],
                ['label' => '/user/registration/resend', 'icon' => 'user', 'url'=>Url::to(['/user/registration/resend'])],
            ]],
            ['label' => 'Security', 'icon' => 'user', 'items' => [                                
                ['label' => '/user/security/login', 'icon' => 'user', 'url'=>Url::to(['/user/security/login'])],
                ['label' => '/user/security/logout', 'icon' => 'user', 'url'=>Url::to(['/user/security/logout'])],
            ]],
            ['label' => 'Recovery', 'icon' => 'user', 'items'  => [                               
                ['label' => '/user/recovery/request', 'icon' => 'user', 'url'=>Url::to(['/user/recovery/request'])],
                ['label' => '/user/recovery/reset', 'icon' => 'user', 'url'=>Url::to(['/user/recovery/reset'])],
            ]],
        ]];

        $type = SideNav::TYPE_PRIMARY;
        $heading = '<i class="glyphicon glyphicon-tasks"></i> ' . Yii::t('app','AUTHENTICATION');
        //$heading = ['label' => 'Books', 'icon' => 'book'] ;                
        echo SideNav::widget([
            'type' => $type,
            'encodeLabels' => false,
            'heading' => $heading,
            'items' =>$menuItems,
        ]);
$menuItems[]=['label'=>'DFenX-Yii2 User-'.Yii::t('app','Authentication manager'),'icon'=>'User','items'=>[
['label'=>'/user/admin/index','icon'=>'list','url'=>url::to(['/user/admin/index']),
['label'=>'/user/1(视图)','icon'=>'eye-open','url'=>url::to(['/user/1']),
[“标签”=>“设置”,“图标”=>“重心”,“项目”=>[
['label'=>'/user/settings','icon'=>'cog','url'=>url::to(['/user/settings']),
['label'=>'/user/settings/profile','url'=>url::to(['/user/settings/profile']),
['label'=>'/user/settings/account','url'=>url::to(['user/settings/account']),
['label'=>'/user/settings/networks','url'=>url::to(['/user/settings/networks']),
]],
[“标签”=>“注册”,“图标”=>“用户”,“项目”=>[
['label'=>'/user/registration/register','icon'=>'user','url'=>url::to(['/user/registration/register']),
['label'=>'/user/registration/ressend','icon'=>'user','url'=>url::to(['/user/registration/ressend']),
]],
[“标签”=>“安全性”,“图标”=>“用户”,“项目”=>[
['label'=>'/user/security/login','icon'=>'user','url'=>url::to(['/user/security/login']),
['label'=>'/user/security/logout','icon'=>'user','url'=>url::to(['/user/security/logout']),
]],
[“标签”=>“恢复”,“图标”=>“用户”,“项目”=>[
['label'=>'/user/recovery/request','icon'=>'user','url'=>url::to(['/user/recovery/request']),
['label'=>'/user/recovery/reset','icon'=>'user','url'=>url::to(['/user/recovery/reset']),
]],
]];
$type=SideNav::type_PRIMARY;
$heading=''。Yii::t('app','AUTHENTICATION');
//$heading=['label'=>'Books','icon'=>'book'];
echo SideNav::小部件([
'type'=>$type,
“encodeLabels”=>false,
“标题”=>$heading,
'items'=>$menuItems,
]);

嗯,最后我决定使用扩展名“”。满足了我的需要。
谢谢

是的,但是如何循环这两种型号?我不明白…:(看我的编辑2我要用一个更复杂的菜单更新答案,其中包含嵌套项和子级别。我需要一个动态菜单。这是一个静态菜单,意味着dinamic。服务器端您可以生成DINAMICALL等效代码…

$item = [];
    $Category = Category::find()->all();
    $count=0;
    foreach($Category as $model) {
        $item[] = ['label' => $model->description, 'url' => '#'];
        $Subcat = Subcat::find()->where("category_id=$model->id")->all();
        $cnt=0;
        foreach($Subcat as $model2) {
            $item[$count]['items'][$cnt] = ['label' => $model2->description, 'url' => '#'];
            $cnt++;
        }
        $count++;
    }

    echo SideNav::widget([
    'items' => $item,
    )];