2017-08-02 97 views
0

我想根據角色製作一個菜單,但是當我嘗試將新的子菜單添加到我的菜單中時,圖標就會被複制。我想知道如何解決這個錯誤?我的JSON看起來像我只有一個模塊的圖標,它應該顯示每個模塊一個圖標,但沒有正確顯示它。爲什麼我的菜單上會出現重複圖標?

MY_Controller

protected function getModules(){ 
     if($this->session->userdata('log')){ 
      $data = $this->session->userdata('log'); 
      $menu = array(); 
      $seccions = $this->module->get_rows(); 
      foreach ($seccions as $index => $seccion){ 
       $modules = $this->module->query("SELECT CONCAT('".$seccion['id']."',storelte_module.id) AS id,CONCAT('".base_url('assets/img/sidebar')."','/',storelte_module.icon) AS icon,storelte_module.module AS value,storelte_module.section_id,CONCAT('".base_url()."',storelte_module.url) AS url FROM storelte_module INNER JOIN storelte_module_profile ON storelte_module_profile.module_id = storelte_module.id WHERE section_id = $seccion[id] AND storelte_module_profile.profile_id = $data[id] AND storelte_module_profile.STATUS = 1"); 
       $seccions[$index]['data']= $modules; 
       if (!count($seccions[$index]['data'])) 
        unset($seccions[$index]); 
      } 
      foreach ($seccions as $item) 
       array_push($menu,$item); 
      return $menu; 
     } 
    } 

home_controller

public function index(){ 
     $data = $this->session->userdata('log'); 
     $data['module'] = "Inventory"; 
     $data['fields'] = $this->getModules(); 
     $this->load->view('header',$data); 
     $this->load->view('index'); 
     $this->load->view('inventory/product'); 
     $this->load->view('footer'); 
    } 

菜單視圖

<aside class="main-sidebar"> 
    <section class="sidebar"> 
     <ul class="sidebar-menu"> 
     <?php foreach ($fields as $section): ?> 
      <?php foreach ($section['data'] as $submenu): ?> 
       <li class="treeview"> 
        <a href=""> 
        <img src="<?= $section['icon']?>" alt="" class="menu-icon"> <span><?= $section['section'] ?></span> 
        <i class="fa fa-angle-left pull-right"></i> 
        </a> 
        <ul class="treeview-menu"> 
        <li><a href="<?= $submenu['url']?>"><i class="fa fa-circle-o text-aqua"></i> <?= $submenu['value'] ?></a></li> 
        </ul> 
       </li> 
      <?php endforeach ?> 
     <?php endforeach ?> 
     </ul> 
    </section> 
</aside> 

JSON

[ 
    { 
    "id": "1", 
    "section": "Inventory", 
    "icon": "http:\/\/localhost\/storelte\/assets\/img\/sidebar\/items.png", 
    "data": [ 
     { 
     "id": "11", 
     "icon": null, 
     "value": "products", 
     "section_id": "1", 
     "url": "http:\/\/localhost\/storelte\/inventory\/product" 
     }, 
     { 
     "id": "12", 
     "icon": null, 
     "value": "provider", 
     "section_id": "1", 
     "url": "http:\/\/localhost\/storelte\/purchase\/provider" 
     } 
    ] 
    }, 
    { 
    "id": "3", 
    "section": "Sales", 
    "icon": "http:\/\/localhost\/storelte\/assets\/img\/sidebar\/sales.png", 
    "data": [ 
     { 
     "id": "33", 
     "icon": null, 
     "value": "sales", 
     "section_id": "3", 
     "url": "http:\/\/localhost\/storelte\/sale\/sales" 
     } 
    ] 
    }, 
    { 
    "id": "4", 
    "section": "Reports", 
    "icon": "http:\/\/localhost\/storelte\/assets\/img\/sidebar\/barchart.png", 
    "data": [ 
     { 
     "id": "44", 
     "icon": null, 
     "value": "reports", 
     "section_id": "4", 
     "url": "http:\/\/localhost\/storelte\/report\/reports" 
     } 
    ] 
    }, 
    { 
    "id": "5", 
    "section": "Store Config", 
    "icon": "http:\/\/localhost\/storelte\/assets\/img\/sidebar\/config.png", 
    "data": [ 
     { 
     "id": "55", 
     "icon": null, 
     "value": "config", 
     "section_id": "5", 
     "url": "http:\/\/localhost\/storelte\/setting\/settings" 
     } 
    ] 
    } 
] 

duplicate_icons

+0

您可以在索引方法中執行$ data的var_dump並觀察您獲得的字段。 – TimBrownlaw

回答

0

這是做它應該做的。

您有兩個循環,一個用於設置ICON值的頂級菜單類別(庫存,銷售,報告和存儲配置)。

內部循環通過子菜單項(產品,供應商,銷售,報告,配置),並使用頂級菜單類別圖標(和名稱)插入每個子菜單項的菜單項。

我認爲你需要改變你的循環。

<?php foreach ($fields as $section): ?> 

<li class="treeview"> <a href=""> <img src="<?= $section['icon']?>" alt="" class="menu-icon"> <span> 
    <?= $section['section'] ?> 
    </span> <i class="fa fa-angle-left pull-right"></i> </a> 
    <ul class="treeview-menu"> 
     <?php foreach ($section['data'] as $submenu): ?> 
     <li><a href="<?= $submenu['url']?>"><i class="fa fa-circle-o text-aqua"></i> 
      <?= $submenu['value'] ?> 
      </a></li> 
     <?php endforeach ?> 
    </ul> 
</li> 
<?php endforeach ?> 

或許檢查子菜單數,如果它是一個,改變外環只是鏈接到子菜單鏈接而不是treemenu,但是這是一個不同的問題。

相關問題