2016-08-18 5 views
1

나는 yii2에 위젯 메뉴가 있습니다 :데이터베이스에서 데이터를 가져와 yii2에서 하위 메뉴로 설정하는 방법은 무엇입니까?

<?= \yii\widgets\Menu::widget([ 
     'encodeLabels' => false, 
     'options' => ['id' => 'dock'], 
     'items' => [ 

      ['label' => 'ab...', 
       'template' => '<i class="fa fa-dashboard"></i><a href="{url}">{label}</a>', 
       'options' => ['class' => 'launcher dropdown hover'], 
       'submenuTemplate' => "\n<ul class='dropdown-menu'>\n{items}\n</ul>\n", 
       'items' => [ 

        ['label' => 'a', 
         'url' => ['users/..'], 
         'visible' => Yii::$app->user->isGuest 
        ], 
        ['label' => 'b', 
         'url' => ['users/..'], 
         'visible' => Yii::$app->user->isGuest 
        ], 
        ... 
       ], 
      ], 

]); 

내가 .I 수동으로 항목을 입력 할 수 없습니다 다를 수 있습니다 항목의 수를 의미 database.That 년대에서 하위 메뉴 아이템을 취득하려고합니다. 예 :

이 코드는 사실이 아닙니다. foreach 루프를 사용해야합니까? 또는이 위젯에 대한 가능성이 있습니까? 샘플 코드가 있습니까?

답변

1

외부 하위 메뉴 구축 할 수 있습니다 : 출력을 인쇄 한 후

// If you don't need object representation, you can use an array to speed up the action (and preserve memory) 
$models = Model::find()->asArray()->all(); 

$items = []; 
foreach ($models as $m) { 
    $items[] = [ 
     'label' => $m['title'], 
     'url' => ['users/..'], 
     'visible' => !Yii::$app -> user -> isGuest 
    ]; 
} 
?> 

echo \yii\widgets\Menu::widget([ 
     'encodeLabels' => false, 
     'options' => ['id' => 'dock'], 
     'items' => [ 
      ['label' => 'ab...', 
       'template' => '<i class="fa fa-dashboard"></i><a href="{url}">{label}</a>', 
       'options' => ['class' => 'launcher dropdown hover'], 
       'submenuTemplate' => "\n<ul class='dropdown-menu'>\n{items}\n</ul>\n", 
       'items' => $items 
      ], 
     ] 
]); 
1

당신은 당신이 위젯이 방법에서

   $models=YouBookModel::find()->select('title')->findAll(); 
       $subMenu = ''; 
       foreach($models as $items){ 

       $subMenu .= "['label' => $items['title'], 
         'url' => ['users/..'], 
         'visible' => !Yii::$app->user->isGuest 
        ],"; 
       } 

다음에 할당

 'items' => [ 

     ['label' => 'ab...', 
      'template' => '<i class="fa fa-dashboard"></i><a href="{url}">{label}</a>', 
      'options' => ['class' => 'launcher dropdown hover'], 
      'submenuTemplate' => "\n<ul class='dropdown-menu'>\n{items}\n</ul>\n", 
      'items' => $subMenu 
      ], 
     ], 
관련 문제