首页 > 解决方案 > 如何在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

像这种结构的列表

我的控制器:

    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_admin/banner.php

行号:58

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

感谢您的宝贵回复

标签: phpmysqlcodeigniter

解决方案


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

模型:

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

推荐阅读