Symfony1 条令

Symfony1 条令,symfony1,doctrine,symfony-1.4,Symfony1,Doctrine,Symfony 1.4,我一直在使用条令研究symfony中的嵌套集行为,以便在我的CMS的管理模块中显示嵌套集层次结构 我遇到过:乍看起来很不错,现在我已经实现了这一点 我的问题在于尝试对根节点进行排序,因为它们是由root_id组织的,而此实现不这样做 我发现了以下内容:但是我已经创建了一个自定义模板来呈现拖放嵌套集,所以我尝试使用它 //generator.yml object_actions: new: _edit: ~ _delete: ~

我一直在使用条令研究symfony中的嵌套集行为,以便在我的CMS的管理模块中显示嵌套集层次结构

我遇到过:乍看起来很不错,现在我已经实现了这一点

我的问题在于尝试对根节点进行排序,因为它们是由root_id组织的,而此实现不这样做

我发现了以下内容:但是我已经创建了一个自定义模板来呈现拖放嵌套集,所以我尝试使用它

//generator.yml
        object_actions:
      new:
      _edit:    ~
      _delete:  ~
      moveUp:
      moveDown:
我已经将代码复制到我的
actions.class.php
中,我的模型类构成了上面的链接

尝试向上移动节点
或向下移动节点
时,会在以下位置引发错误:
$this->current_report->getId(),
in executeUp()和executeown()中

致命错误:对非对象调用成员函数getId()

如果然后尝试使用
$this->current\u report=new Tree()
创建
当前报告
对象,则会出现另一个错误:

致命错误:对非对象调用成员函数setPosition()
这是在我的
Tree.class.php
文件中,方法是
swapWith()

位置是我用来排序的字段,而不是根id

如果有人能帮我,我会非常感激的


谢谢

您不能使用嵌套集对根节点重新排序

如果您需要这样做,您可以像我一样创建一个伪根节点级别。其思想是,级别0将是您的“假根”节点级别,而您的“真根”节点从级别1开始

通过这种方式,您可以对伪根节点重新排序,如果操作正确,用户不会注意到

我对这项技术的实现如下所示:


github上提供的源代码:

您不能使用嵌套集对根节点重新排序

如果您需要这样做,您可以像我一样创建一个伪根节点级别。其思想是,级别0将是您的“假根”节点级别,而您的“真根”节点从级别1开始

通过这种方式,您可以对伪根节点重新排序,如果操作正确,用户不会注意到

我对这项技术的实现如下所示:


github上提供的源代码:

我只是想按位置对它们进行排序,因为我目前有3个根节点,并且通过它们的
id
定位在前端的嵌套集中。因此,我希望能够以不同的顺序显示它们,而不是删除节点并以其他顺序重新添加它们。如果这有意义的话?我能想到的唯一方法是使用自己的机制来跟踪根节点的顺序。如果仅依赖嵌套集,那么您是对的,您只能删除/重新创建根节点以对其重新排序。这就是为什么我解释说你需要创建一个假的根级别,并将你的根节点存储在第一个级别。似乎做了我想做的事。可能需要对其进行一些修改,因为当前在前端,由于“假节点”会弄乱我的导航菜单耶,您需要确保所有代码都考虑到该级别的0节点。无法对根节点重新排序对嵌套集来说是一个非常恼人的限制。它似乎创建了“类别”根节点,然后所有其他节点似乎都是它的子节点。所以prob必须更改我的导航以考虑到这一点,我只是想按位置对它们进行排序,因为我目前有3个根节点,并且通过它们的
id
定位在前端的嵌套集中。因此,我希望能够以不同的顺序显示它们,而不是删除节点并以其他顺序重新添加它们。如果这有意义的话?我能想到的唯一方法是使用自己的机制来跟踪根节点的顺序。如果仅依赖嵌套集,那么您是对的,您只能删除/重新创建根节点以对其重新排序。这就是为什么我解释说你需要创建一个假的根级别,并将你的根节点存储在第一个级别。似乎做了我想做的事。可能需要对其进行一些修改,因为当前在前端,由于“假节点”会弄乱我的导航菜单耶,您需要确保所有代码都考虑到该级别的0节点。无法对根节点重新排序对嵌套集来说是一个非常恼人的限制。它似乎创建了“类别”根节点,然后所有其他节点似乎都是它的子节点。所以prob必须改变我的导航才能考虑到这一点