如何在codeigniter中创建动态菜单

x7yiwoj4  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(298)

我在codeigniter中列出类别时遇到问题
我的table是:

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

类似这种结构的列表
我的控制器:

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);
}

我的型号:

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\u admin/banner.php
行号:58
如何在视图中创建for each循环以获得预期的输出
谢谢你宝贵的答复

mfpqipee

mfpqipee1#

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

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

相关问题