【问题标题】:CakePHP Tree Behavior, Multiple Trees Per TableCakePHP 树行为,每表多棵树
【发布时间】:2011-10-06 17:24:23
【问题描述】:

我遇到了一个相当复杂的问题,我需要树的行为来提供帮助。

我有一个名为nodes 的表,这个表已经有一个树,这个树用来构建一个菜单。

现在我们想让创建多个菜单成为可能,所以我制作了node_menusmenus 表。所以Nodes hasAndBelongsToMany Menus

但是有一个小问题,菜单已构建但使用$this->Node->find('threaded'),因此子菜单是可能的。所有节点都可以在多个菜单中使用,所有菜单都需要一棵树,因此可以对节点进行排序,也可以创建子菜单。

为此,我正在考虑为每个菜单创建一个包含树的表,并将一个节点链接到树表中的每一行。

所以基本上我需要一个带有Trees belongsTo Nodes 关系的trees 表。在这棵树中,我有字段menu_idnode_idparent_idlftrght

现在的问题是,一张表中是否可以有多个树?说,我想要menu_id 为15 的树。是否可以使用带有所述ID 的find('threaded') 来返回所有数据以及与node_id 相关的节点。包括用于创建和操作树的所有其他核心函数。

这可能吗?如果没有,是否有人对如何制作多个菜单有更好的解决方案,其中节点可以放置在可以排序和线程化的多个菜单中?

【问题讨论】:

    标签: cakephp tree behavior cakephp-1.2


    【解决方案1】:

    像下面这样想,然后你可以用一棵树来做。

    root[hidden node]
    ---- Menu 1
    -------- Item 1.1
    -------- Item 1.2
    -------- Item 1.3
    ---- Menu 2
    -------- Sub Menu 2.1
    ------------ Item 2.1.1
    -------- Item 2.1
    ---- Menu 3
    ---- Menu 4
    ---- Menu 5
    

    我已经为 CakePHP 制作了一个菜单构建器插件,如果你喜欢的话可以使用它:) https://github.com/torifat/cake-menu_builder

    【讨论】:

    • 这可能行得通!我不知道为什么我总是想得比我必须的更复杂。所以我可以在菜单表中执行此操作,将节点与菜单项相关联,并通过查找子项来检索树。这也将使其更易于管理。我试试看!
    猜你喜欢
    • 1970-01-01
    • 2011-01-02
    • 1970-01-01
    • 2014-09-24
    • 2010-10-15
    • 1970-01-01
    • 2012-10-12
    • 2020-12-06
    • 1970-01-01
    相关资源
    最近更新 更多