有2种型号

有2种型号

问题描述:

什么是动态创建使用 “SideNav窗口小部件” 和2款菜单正确的方式创建一个动态SideNav的Widget:有2种型号

(ID,描述)

SUBCAT (ID,CATEGORY_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, 

enter image description here

,因为我想:

enter image description here

好了,终于我决定使用扩展名 “yii2-menu”。并满足了我的需求。 谢谢

您正在寻找这样出头?

为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, 
       ]); 

或更复杂的一个嵌套项

 $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, 
     ]); 
+0

是的,但如何循环2模型? – gugoan

+0

我已经更新答案.... – scaisEdge

+0

我不明白... :(看我的EDIT2 – gugoan

$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, 
    )];