2017-08-02 308 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,但是这是一个不同的问题。

相关问题