如何在codeigniter中创建动态菜单

时间:2018-04-27 18:40:10

标签: php mysql codeigniter

我在codeigniter中列出类别有问题 我的表是:

    id    name      sub_category   category_name    desc     status
    3    submenu1       menu1      category1        desc1      1
    4    submenu1       menu2      category1        desc1      1
    5    submenu1       menu1      category2        desc1      1
    6    submenu1       menu2      category2        desc1      1

我的预期输出是:

 category1
   submenu1 
     menu1
     menu2

 category2
   submenu1 
     menu1
     menu2

列出这种结构

myController的:

    public function index(){
// $this->load->view('view_admin/home');
$data['menu']=$this->Admin_model->menu();
$data['menu1']=$this->Admin_model->menu1();
$data['menu2']=$this->Admin_model->menu2();
echo '<pre>';
print_r($data['menu1']);
echo '</pre>';
$this->load->view('view_admin/banner',$data);
}

为MyModel:

 function menu(){
    $this->db->select('*');
    $this->db->from('productpage');
    $this->db->where('status',1);
    $this->db->group_by('category_name');
    $query = $this->db->get();
    $result = $query->result();
    return $result;
}
function menu1(){
    $this->db->select('*,group(');
    $this->db->from('productpage');
    $this->db->where('status',1);
    $this->db->group_by('name');
    $query = $this->db->get();
    $result = $query->result();
    return $result;
}
function menu2(){
    $this->db->select('*');
    $this->db->from('productpage');
    $this->db->where('status',1);
    $this->db->group_by('sub_category');
    $query = $this->db->get();
    $result = $query->result();
    return $result;
}

我得到这样的错误 遇到PHP错误 严重性:注意

消息:尝试获取非对象的属性

文件名:view_admin / banner.php

行号:58

如何为视图中的每个循环创建一个以获得预期的输出

感谢您的宝贵回复

1 个答案:

答案 0 :(得分:2)

您只需要一个查询/模型函数,并在视图之前稍微重新排列数组:

型号:

function menu(){
    return $this->db->get_where('productpage', array('status' => 1))->result_array();
}

控制器:

$array = $this->Admin_model->menu();
$menu = array();
foreach ($array as $item) {
    // rearrange things
    $menu[$item['category_name']][$item['name']][] = $item['sub_category'];
}
$this->load->view('view_admin/banner', array('menu_data' => $menu));

查看:

foreach ($menu_data as $cat_name => $sub_menu) {
    echo $cat_name . '<br>';
    foreach ($sub_menu as $sub_menu_name => $menus) {
        echo $sub_menu_name . '<br>';
        foreach ($menus as $menu) {
            echo $menu . '<br>';
        }
    }
}

生成:

category1
submenu1
menu1
menu2
category2
submenu1
menu1
menu2