我一直在使用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
中,我的模型类构成了上面的链接。
尝试移动节点up
或down
时,会在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。
如果有人可以帮助我,我会非常感激。
由于
答案 0 :(得分:1)
您无法使用Doctrine Nested Sets重新排序根节点。
如果您需要这样做,您可以执行与我相同的操作并创建假根节点级别。这个想法是0级将是你的“假根”节点级别,你的“真正的根”节点从1级开始。
通过这种方式,您可以重新排序假根节点,如果正确完成,用户就不会注意到它。
我在这里演示了这种技术的实现:http://cart.samedraw.com/cartadmin/categoryIndex
github提供的源代码:https://github.com/jongallant/sfCartPlugin