在学说中订购物品

时间:2011-05-16 15:32:15

标签: symfony1 doctrine symfony-1.4

我一直在使用doctrine查看symfony中的nestedSet行为,在我的CMS的管理模块中显示nestedSet层次结构。

我遇到过:http://redotheoffice.com/?tag=doctrine-drag-drop-admin-generator-symfony-nestedset乍一看看起来很棒,我现在已经实现了这个。

我的问题来自于尝试订购根节点,因为它们是由root_id组织的,而这种实现并没有这样做。

我找到了以下内容:http://blog.rajatpandit.com/2010/03/27/ordering-list-of-items-doctrine-symfony-1-4/但我已经创建了一个自定义模板来渲染拖放嵌套集,所以我正在尝试使用它。

//generator.yml
        object_actions:
      new:
      _edit:    ~
      _delete:  ~
      moveUp:
      moveDown:

我已将代码复制到我的actions.class.php中,我的模型类构成了上面的链接。

尝试移动节点updown时,会在executeUp()和executeDown()

中抛出错误:$this->current_report->getId(),

Fatal error: Call to a member function getId() on a non-object

如果我尝试使用current_report创建$this->current_report = new Tree()对象,则会出现另一个错误:

Fatal error: Call to a member function setPosition() on a non-object这是在我的Tree.class.php文件中,方法是swapWith()

位置是我用来排序的字段而不是root_id。

如果有人可以帮助我,我会非常感激。

由于

1 个答案:

答案 0 :(得分:1)

您无法使用Doctrine Nested Sets重新排序根节点。

如果您需要这样做,您可以执行与我相同的操作并创建假根节点级别。这个想法是0级将是你的“假根”节点级别,你的“真正的根”节点从1级开始。

通过这种方式,您可以重新排序假根节点,如果正确完成,用户就不会注意到它。

我在这里演示了这种技术的实现:http://cart.samedraw.com/cartadmin/categoryIndex

github提供的源代码:https://github.com/jongallant/sfCartPlugin