CodeIgniter中的多级菜单,带有单个表

时间:2015-01-06 10:06:31

标签: php mysql arrays codeigniter

我是CodeIgniter的新手。我正在尝试创建一个多级菜单。以下是我的超级菜单结构。

________________________________________________________________________
|    main menu    |  main menu     | main menu
————————————————————————————————————————————————————————————————————————
| sub menu        |  sub menu      | sub menu

| sub sub menu    |  sub sub menu  | sub sub menu
| sub sub menu    |  sub sub menu  | sub sub menu
| sub sub menu    |  sub sub menu  | sub sub menu
| sub sub menu    |  sub sub menu  | sub sub menu
————————————————————————————————————————————————————————————————————————

我的表

________________________________________________________________________
| menu_id              |  menu_parent     | menu_name
————————————————————————————————————————————————————————————————————————
| 1               |  0             | Root
| 2               |  1             | Sub category of root
| 3               |  0             | category 1
| 4               |  3             | sub category of category 1
| 5               |  4             | sub category of first sub category of category 1
————————————————————————————————————————————————————————————————————————

我的模特

  protected function getCategoryTree($level = 0, $prefix = '') {
    $rows = $this->db
        ->select('menu_id,menu_parent,menu_name')
        ->where('menu_parent', $level)
        ->where('menu_status', '0')
        ->order_by('menu_id','asc')
        ->get('menu')
        ->result();
    $category = '';
    if (count($rows) > 0) {
        foreach ($rows as $row) {
                $category .= $row->menu_name . "\n";
                // Append subcategories
                $category .= $this->getCategoryTree($row->menu_id);
        }
    }
    return $category;
}

    public function printCategoryTree() {
        $getCategoryTree = $this->getCategoryTree();
        return $getCategoryTree;
    }

我的问题是,我想要我的主菜单,子菜单和子子菜单显示适当的CSS。但根据上面的代码,我无法管理子菜单&子子菜单。

所以我需要获得子菜单和放大器的所有值。子子菜单独立。请帮忙。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我知道有很多人这样做,但我相信Table for menu并不是大多数时候最好的选择。看起来你只是想让它复杂化。我不建议将方形钉挂在圆孔中。

我的意思是当你使用表时,你将不得不松开自然层次结构,你必须提出调整,黑客和解决方法来模拟它然后循环以创建实际的层次结构,这也是很多工作。

你最好使用MongoDB,或者如果MongoDB过度使用,那么只需使用一个简单的jSON文件来保存整个菜单的深层嵌套族树,如父菜单,子菜单,大孩子菜单,叔叔菜单,阿姨菜单,侄子菜单,盛大父母菜单等(​​hahaha lol)一切都是这样的。