【问题标题】:Multi level menu in CodeIgniter with single tableCodeIgniter 中的多级菜单与单表
【发布时间】:2015-01-06 10:06:30
【问题描述】:

我是 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 显示。但是按照上面的代码,我无法管理子菜单和子子菜单。

所以我需要独立获取子菜单和子子菜单的所有值。请帮忙。提前致谢。

【问题讨论】:

标签: php mysql arrays codeigniter


【解决方案1】:

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

我的意思是,当您使用表格时,您将不得不放松自然层次结构,并且您必须提出调整、技巧和变通办法来模拟它,然后循环创建实际的层次结构,这也是很多工作。

你最好使用 MongoDB,或者如果 MongoDB 太过分了,那么只需使用一个简单的 JSON 文件来保存整个菜单的深度嵌套的家谱,比如父菜单、子菜单、大子菜单、叔叔菜单、阿姨菜单、侄子菜单、大菜单父菜单等(哈哈哈)一切都是这样。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多